2011-01-11 11 views
6

Ich muss das Kennwort für Keystore in meinem EJB angeben, aber ich möchte nicht, dass es für Entwickler sichtbar ist. Meine Idee war, Authentifizierungs-Alias ​​in der Websphere-Konsole zu schaffen und später nach MY_ALIAS zu suchen und Kennwort vom Alias ​​zu erhalten. Ich fand einige Diskussion im Zusammenhang mit Thema bei: http://www.coderanch.com/t/79439/Websphere/Authentication-DataSo greifen Sie auf den Authentifizierungsalias von EJB zu Websphere 6.1 zu

Weiß jemand Alias ​​sein kann Lookuped? Was ist Ihre vorgeschlagene Methode, um mein Ziel zu erreichen?

Vielen Dank!

Antwort

6

können Sie den folgenden Code verwenden Anmeldeinformationen von J2C-Authentifizierungsdateneingabe zu erhalten:

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

Dieser arbeitete wie ein Charme! – Jay

+0

Ich frage mich, ob es eine Möglichkeit gibt, dies ohne Verweis auf die Websphere-spezifischen Klassen ('Constants' und' WSMappingCallbackHandlerFactory') zu tun? – FGreg

+0

@FGreg Ich denke nicht, dass das möglich ist. Es sind WAS-spezifische Dinge, daher sollte man davon ausgehen, dass bestimmte Klassen verwendet werden. BTW, diese sind Teil der öffentlichen WAS-API. Haben Sie ein Problem damit? – fnt