package org.apereo.cas.authentication.principal; import com.fasterxml.jackson.annotation.JsonTypeInfo; import java.io.Serializable; import java.util.Map; /** * Generic concept of an authenticated thing. Examples include a person or a * service. * <p> * The implementation SimplePrincipal just contains the Id property. More * complex Principal objects may contain additional information that are * meaningful to the View layer but are generally transparent to the rest of * CAS. * </p> * * @author Scott Battaglia * @since 3.0.0 */ @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include= JsonTypeInfo.As.PROPERTY) public interface Principal extends Serializable { /** * @return the unique id for the Principal */ String getId(); /** * * @return the map of configured attributes for this principal */ Map<String, Object> getAttributes(); }