package org.atricore.idbus.capabilities.sts.main.authenticators;
import org.atricore.idbus.capabilities.sts.main.AbstractSecurityTokenAuthenticator;
import org.atricore.idbus.kernel.main.authn.Credential;
import org.atricore.idbus.kernel.main.authn.exceptions.SSOAuthenticationException;
import org.oasis_open.docs.wss._2004._01.oasis_200401_wss_wssecurity_secext_1_0.UsernameTokenType;
import javax.xml.namespace.QName;
/**
* Default basic authenticator adapter.
*
* @author <a href=mailto:sgonzalez@atricore.org>Sebastian Gonzalez Oyuela</a>
*/
public class BasicSecurityTokenAuthenticator extends AbstractSecurityTokenAuthenticator {
public static final String SCHEME_NAME = "basic-authentication";
public BasicSecurityTokenAuthenticator() {
super();
setScheme(SCHEME_NAME);
}
@Override
protected Credential[] getCredentials(Object requestToken) throws SSOAuthenticationException {
setScheme(SCHEME_NAME);
UsernameTokenType usernameToken = (UsernameTokenType) requestToken;
String username = usernameToken.getUsername().getValue();
String password = usernameToken.getOtherAttributes().get( new QName( PASSWORD_NS) );
Credential usernameCredential = getAuthenticator().newCredential(getScheme(), "username", username);
Credential passwordCredential = getAuthenticator().newCredential(getScheme(), "password", password);
return new Credential[] {usernameCredential, passwordCredential};
}
public boolean canAuthenticate(Object requestToken) {
if (requestToken instanceof UsernameTokenType) {
UsernameTokenType usernameToken = (UsernameTokenType) requestToken;
if (usernameToken.getOtherAttributes().get( new QName( PASSWORD_NS) ) != null)
return true;
}
return false;
}
}