package org.apereo.cas.adaptors.trusted.authentication.handler.support;
import org.apereo.cas.adaptors.trusted.authentication.principal.PrincipalBearingCredential;
import org.apereo.cas.authentication.AbstractAuthenticationHandler;
import org.apereo.cas.authentication.Credential;
import org.apereo.cas.authentication.DefaultHandlerResult;
import org.apereo.cas.authentication.HandlerResult;
import org.apereo.cas.authentication.principal.PrincipalFactory;
import org.apereo.cas.services.ServicesManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.security.GeneralSecurityException;
/**
* AuthenticationHandler which authenticates Principal-bearing credentials.
* Authentication must have occurred at the time the Principal-bearing
* credentials were created, so we perform no further authentication. Thus
* merely by being presented a PrincipalBearingCredential, this handler returns
* true.
*
* @author Andrew Petro
* @since 3.0.0
*/
public class PrincipalBearingCredentialsAuthenticationHandler extends AbstractAuthenticationHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(PrincipalBearingCredentialsAuthenticationHandler.class);
public PrincipalBearingCredentialsAuthenticationHandler(final String name, final ServicesManager servicesManager, final PrincipalFactory principalFactory) {
super(name, servicesManager, principalFactory, null);
}
@Override
public HandlerResult authenticate(final Credential credential) throws GeneralSecurityException {
LOGGER.debug("Trusting credential for: [{}]", credential);
return new DefaultHandlerResult(
this, (PrincipalBearingCredential) credential, this.principalFactory.createPrincipal(credential.getId()));
}
@Override
public boolean supports(final Credential credential) {
return credential instanceof PrincipalBearingCredential;
}
}