2011-01-11 10 views
6

EJB'de anahtar deposu için parola sağlamalıyım ancak geliştiricilerin görünür olmasını istemiyorum. Fikrim, Websphere Console'da Kimlik Doğrulama Takma Adı oluşturmak ve daha sonra MY_ALIAS için arama yapmak ve takma addan şifre almaktı. Konuyla ilgili bazı tartışmalar buldum: http://www.coderanch.com/t/79439/Websphere/Authentication-DataEJB'den Websphere'e dağıtılan kimlik doğrulama takma adlarına erişme 6.1

Takma adlar aranabilir mi? Hedefe ulaşmak için önerilen yönteminiz nedir?

Çok teşekkür ederim!

cevap

6

Sen J2C kimlik doğrulama veri girişi kimlik bilgileri elde aşağıdaki kodu kullanabilirsiniz:

import com.ibm.wsspi.security.auth.callback.Constants; 
import com.ibm.wsspi.security.auth.callback.WSMappingCallbackHandlerFactory; 
import javax.resource.spi.security.PasswordCredential; 
import javax.security.auth.Subject; 
import javax.security.auth.callback.CallbackHandler; 
import javax.security.auth.login.LoginContext; 

Map map = new HashMap(); 
map.put(Constants.MAPPING_ALIAS, "YOUR_J2C_DATA_ALIAS"); 
CallbackHandler callbackHandler = WSMappingCallbackHandlerFactory.getInstance().getCallbackHandler(map, null); 

LoginContext loginContext = new LoginContext("DefaultPrincipalMapping", callbackHandler); 
loginContext.login(); 

Subject subject = loginContext.getSubject(); 
Set credentials = subject.getPrivateCredentials(); 

PasswordCredential passwordCredential = (PasswordCredential) credentials.iterator().next(); 

String user = passwordCredential.getUserName(); 
String password = new String(passwordCredential.getPassword()); 
+0

Bu bir cazibe gibi çalıştı! – Jay

+0

Websphere'e özel sınıflara ("Constants" ve "WSMappingCallbackHandlerFactory") başvurmadan bunu yapmanın bir yolu olup olmadığını merak ediyorum. – FGreg

+0

@FGreg Bunun mümkün olduğunu düşünmüyorum. Bu, WAS'a özgü bir şeydir, bu yüzden bazı belirli sınıfları kullanmayı düşünmelisiniz. BTW, bunlar genel WAS API'sinin bir parçasıdır. Bunu kullanırken herhangi bir sorun var mı? – fnt