You can use the following code to get the credentials from the J2C authentication input:
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());
fnt
source share