package org.apereo.cas.authentication.policy; import org.apereo.cas.authentication.Authentication; import org.apereo.cas.authentication.ContextualAuthenticationPolicy; import org.apereo.cas.authentication.ContextualAuthenticationPolicyFactory; import org.apereo.cas.services.RegisteredService; import org.apereo.cas.services.ServiceContext; /** * Produces {@link ContextualAuthenticationPolicy} instances that are satisfied iff the given {@link Authentication} * was created by authenticating credentials by all handlers named in * {@link RegisteredService#getRequiredHandlers()}. * * @author Marvin S. Addison * @since 4.0.0 */ public class RequiredHandlerAuthenticationPolicyFactory implements ContextualAuthenticationPolicyFactory<ServiceContext> { @Override public ContextualAuthenticationPolicy<ServiceContext> createPolicy(final ServiceContext context) { return new ContextualAuthenticationPolicy<ServiceContext>() { @Override public ServiceContext getContext() { return context; } @Override public boolean isSatisfiedBy(final Authentication authentication) { return context.getRegisteredService().getRequiredHandlers().stream() .allMatch(required -> authentication.getSuccesses().containsKey(required)); } }; } }