/**
 * <p>Credentials is a marker interface for an opaque object that may be recognized by
 * Handlers and Resolvers. Credentials may be a UserId/Password, Certificate,
 * RemoteUser, IP address, etc.</p>
 * <p>When the authentication manager is
 * used, that bean is configured with a list of {@link org.apereo.cas.authentication.AuthenticationHandler} that
 * validate Credentials and {@link org.apereo.cas.authentication.principal.PrincipalResolver} that turn
 * {@link org.apereo.cas.authentication.Credential} objects into
 * into {@link org.apereo.cas.authentication.principal.Principal} objects.</p>
 * <p>The Authentication Handler validates credentials and in certain cases is able extract
 * information. The extraction use case is clearer when credentials are certificates.
 * A certificate is valid if you trust the CA, if it hasn't expired, and if it isn't revoked.
 * You can decide all this, and still not have the foggiest idea what ID to give to the person (if
 * it is a person) represented by the Certificate.</p>
 * <p>The {@link org.apereo.cas.authentication.principal.PrincipalResolver}
 * looks into previously validated credentials to construct a Principal object containing an ID (and in more
 * complex cases some attributes). The {@link org.apereo.cas.authentication.principal.resolvers.ProxyingPrincipalResolver} takes
 * credentials and creates a SimplePrincipal containing the Userid.</p>
 *
 * @since 3.0
 */
package org.apereo.cas.authentication.principal;

