package org.apereo.cas.authentication;
/**
* A factory for producing (stateful) authentication policies based on arbitrary context data.
* This component provides a way to inject stateless factories into components that produce stateful
* authentication policies that can leverage arbitrary contextual information to evaluate security policy.
*
* @author Marvin S. Addison
* @since 4.0.0
*/
public interface ContextualAuthenticationPolicyFactory<T> {
/**
* Creates a contextual (presumably stateful) authentication policy based on provided context data.
*
* @param context Context data used to create an authentication policy.
*
* @return Contextual authentication policy object. The returned object should be assumed to be stateful
* and not thread safe unless explicitly noted otherwise.
*/
ContextualAuthenticationPolicy<T> createPolicy(T context);
}