/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive.jaas; import java.util.Map; import javax.security.auth.Subject; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.NameCallback; import javax.security.auth.callback.PasswordCallback; import javax.security.auth.login.LoginException; import org.ldaptive.SearchRequest; import org.ldaptive.auth.AuthenticationRequest; import org.ldaptive.auth.Authenticator; /** * Login module for testing configuration properties. * * @author Middleware Services */ public class PropsLoginModule extends AbstractLoginModule { /** Authenticator to load properties for. */ private Authenticator auth; /** Authentication request to load properties for. */ private AuthenticationRequest authRequest; /** Role resolver to load properties for. */ private RoleResolver roleResolver; /** Search request to load properties for. */ private SearchRequest searchRequest; @Override public void initialize( final Subject subject, final CallbackHandler callbackHandler, final Map<String, ?> sharedState, final Map<String, ?> options) { super.initialize(subject, callbackHandler, sharedState, options); final AuthenticatorFactory authenticatorFactory = new PropertiesAuthenticatorFactory(); auth = authenticatorFactory.createAuthenticator(options); authRequest = authenticatorFactory.createAuthenticationRequest(options); final RoleResolverFactory roleResolverFactory = new PropertiesRoleResolverFactory(); roleResolver = roleResolverFactory.createRoleResolver(options); searchRequest = roleResolverFactory.createSearchRequest(options); } @Override protected boolean login(final NameCallback nameCb, final PasswordCallback passCb) throws LoginException { return true; } @Override public boolean commit() throws LoginException { subject.getPublicCredentials().add(auth); subject.getPublicCredentials().add(authRequest); subject.getPublicCredentials().add(roleResolver); subject.getPublicCredentials().add(searchRequest); return true; } @Override public boolean abort() { loginSuccess = false; return true; } @Override public boolean logout() { return true; } }