package org.apereo.cas.adaptors.trusted.authentication.principal; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import org.apereo.cas.authentication.AbstractCredential; import org.apereo.cas.authentication.principal.Principal; import org.springframework.util.Assert; /** * Credential that bear the fully resolved and authenticated Principal, or an * indication that there is no such Principal. These Credential are a mechanism * to pass into CAS information about an authentication and Principal resolution * that has already happened in layers in front of CAS, e.g. by means of a Java * Servlet Filter or by means of container authentication in the servlet * container or Apache layers. DO NOT accept these Credential from arbitrary * web-servicey calls to CAS. Rather, the code constructing these Credential * must be trusted to perform appropriate authentication before issuing these * credentials. * * @author Andrew Petro * @since 3.0.0 */ public class PrincipalBearingCredential extends AbstractCredential { /** Serialization version marker. */ private static final long serialVersionUID = 8866786438439775669L; /** The trusted principal. */ private Principal principal; /** * Instantiates a new principal bearing credential. * * @param principal the principal */ @JsonCreator public PrincipalBearingCredential(@JsonProperty("principal") final Principal principal) { Assert.notNull(principal, "principal cannot be null"); this.principal = principal; } /** * Get the previously authenticated Principal. * * @return authenticated Principal */ public Principal getPrincipal() { return this.principal; } @JsonIgnore @Override public String getId() { return this.principal.getId(); } }