package org.apereo.cas.services; import com.fasterxml.jackson.annotation.JsonTypeInfo; import org.apereo.cas.authentication.principal.Principal; import org.apereo.cas.authentication.principal.Service; import java.io.Serializable; import java.util.Map; /** * The release policy that decides how attributes are to be released for a given service. * Each policy has the ability to apply an optional filter. * * @author Misagh Moayyed * @since 4.1.0 */ @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY) public interface RegisteredServiceAttributeReleasePolicy extends Serializable { /** * Is authorized to release credential password? * * @return true /false */ default boolean isAuthorizedToReleaseCredentialPassword() { return false; } /** * Is authorized to release proxy granting ticket? * * @return true /false */ default boolean isAuthorizedToReleaseProxyGrantingTicket() { return false; } /** * Sets the attribute filter. * * @param filter the new attribute filter */ default void setAttributeFilter(RegisteredServiceAttributeFilter filter) { } /** * Gets the attributes, having applied the filter. * * @param p the principal that contains the resolved attributes * @param selectedService the selected service * @param service the service * @return the attributes */ Map<String, Object> getAttributes(Principal p, Service selectedService, RegisteredService service); }