package org.apereo.cas.authentication; import org.apereo.cas.authentication.principal.Service; import org.springframework.core.Ordered; import java.io.Serializable; /** * This is {@link AuthenticationServiceSelectionStrategy} which attempts to * resolve and nominate a service during a validation event. By default * most services provided to CAS are taken and resolved verbatim. However, * in scenarios where a given module ends up inserting target service identifiers * into the service parameter as query strings where the final service URL is * designated to be a callback url to CAS which carries the real service identifier, * (such as SAML2 support where callbacks are used to route the request back to CAS), * an implementation of this strategy may be used to detect the query parameters * inside the URL to use the real service for user attribute processing and more. * Services resolved via this strategy must still be vetted against the service registry. * * @author Misagh Moayyed * @since 5.0.0 */ public interface AuthenticationServiceSelectionStrategy extends Serializable, Ordered { /** * Resolves the real service from the provided service, if appropriate. * * @param service the provided service by the caller * @return the resolved service */ Service resolveServiceFrom(Service service); /** * Indicates whether this strategy supports service selection. * * @param service the service * @return true/false */ boolean supports(Service service); }