package org.apereo.cas.authentication.principal; import com.fasterxml.jackson.annotation.JsonTypeInfo; import java.io.Serializable; import java.util.Map; /** * Defines operations required for retrieving principal attributes. * Acts as a proxy between the external attribute source and CAS, * executing such as additional processing or caching on the set * of retrieved attributes. Implementations may simply decide to * do nothing on the set of attributes that the principal carries * or they may attempt to refresh them from the source, etc. * @author Misagh Moayyed * @see PrincipalFactory * @since 4.1 */ @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY) public interface PrincipalAttributesRepository extends Serializable { /** * Gets attributes for the given principal id. * * @param p the principal whose attributes need to be retrieved. * @return the attributes */ Map<String, Object> getAttributes(Principal p); }