package org.apereo.cas.web.config; import org.apereo.cas.authentication.adaptive.AdaptiveAuthenticationPolicy; import org.apereo.cas.authentication.principal.DefaultPrincipalFactory; import org.apereo.cas.authentication.principal.PrincipalFactory; import org.apereo.cas.configuration.CasConfigurationProperties; import org.apereo.cas.web.flow.BasicAuthenticationAction; import org.apereo.cas.web.flow.BasicAuthenticationWebflowConfigurer; import org.apereo.cas.web.flow.CasWebflowConfigurer; import org.apereo.cas.web.flow.resolver.CasDelegatingWebflowEventResolver; import org.apereo.cas.web.flow.resolver.CasWebflowEventResolver; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.webflow.definition.registry.FlowDefinitionRegistry; import org.springframework.webflow.engine.builder.support.FlowBuilderServices; import org.springframework.webflow.execution.Action; /** * This is {@link CasBasicAuthenticationConfiguration}. * * @author Misagh Moayyed * @since 5.0.0 */ @Configuration("casBasicAuthenticationConfiguration") @EnableConfigurationProperties(CasConfigurationProperties.class) public class CasBasicAuthenticationConfiguration { @Autowired @Qualifier("adaptiveAuthenticationPolicy") private AdaptiveAuthenticationPolicy adaptiveAuthenticationPolicy; @Autowired @Qualifier("serviceTicketRequestWebflowEventResolver") private CasWebflowEventResolver serviceTicketRequestWebflowEventResolver; @Autowired @Qualifier("initialAuthenticationAttemptWebflowEventResolver") private CasDelegatingWebflowEventResolver initialAuthenticationAttemptWebflowEventResolver; @Autowired @Qualifier("loginFlowRegistry") private FlowDefinitionRegistry loginFlowDefinitionRegistry; @Autowired private FlowBuilderServices flowBuilderServices; @Bean public Action basicAuthenticationAction() { return new BasicAuthenticationAction(initialAuthenticationAttemptWebflowEventResolver, serviceTicketRequestWebflowEventResolver, adaptiveAuthenticationPolicy); } @ConditionalOnMissingBean(name = "basicAuthenticationWebflowConfigurer") @Bean public CasWebflowConfigurer basicAuthenticationWebflowConfigurer() { return new BasicAuthenticationWebflowConfigurer(flowBuilderServices, loginFlowDefinitionRegistry); } @ConditionalOnMissingBean(name = "basicPrincipalFactory") @Bean public PrincipalFactory basicPrincipalFactory() { return new DefaultPrincipalFactory(); } }