package org.apereo.cas.adaptors.x509.authentication.principal;
import java.security.cert.X509Certificate;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apereo.cas.authentication.Credential;
import org.apereo.cas.authentication.principal.Principal;
import org.apereo.cas.authentication.principal.resolvers.PersonDirectoryPrincipalResolver;
/**
* Abstract class in support of multiple resolvers for X509 Certificates.
*
* @author Scott Battaglia
* @since 3.0.0
*/
public abstract class AbstractX509PrincipalResolver extends PersonDirectoryPrincipalResolver {
@Override
protected String extractPrincipalId(final Credential credential, final Principal currentPrincipal) {
return resolvePrincipalInternal(((X509CertificateCredential) credential).getCertificate());
}
@Override
public boolean supports(final Credential credential) {
return credential instanceof X509CertificateCredential;
}
/**
* Resolve principal internally, and return the id.
*
* @param certificate the certificate
* @return the string
*/
protected abstract String resolvePrincipalInternal(X509Certificate certificate);
@Override
public String toString() {
return new ToStringBuilder(this)
.appendSuper(super.toString())
.toString();
}
}