How to access authentication alias from EJB deployed to Websphere 6.1

前端 未结 1 927
长情又很酷
长情又很酷 2020-12-03 23:25

I need to provide password for keystore in my EJB but I don\'t want it to be visible to developers. My idea was to create Authentication Alias in Websphere Console and later

相关标签:
1条回答
  • 2020-12-03 23:42

    You can use the following code to obtain credentials from J2C authentication data entry:

    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 讨论(0)
提交回复
热议问题