package org.surfnet.oaaas.config;
import org.jasig.cas.client.authentication.AuthenticationFilter;
import org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter;
import org.jasig.cas.client.validation.Cas20ServiceTicketValidator;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.surfnet.oaaas.cas.PostCasAuthenticationFilter;
import javax.servlet.Filter;
import java.util.Arrays;
import java.util.List;
/**
* Created by bourges on 06/08/14.
*/
@Configuration
@PropertySource("classpath:apis.application.properties")
public class CasSpringConfiguration {
@Value("${cas.serverName}")
private String serverName;
@Value("${cas.serverUrlPrefix}")
private String serverUrlPrefix;
@Value("${cas.adminList}")
private String adminList;
@Bean
public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
@Bean
public Filter casAuthenticationFilter() {
final AuthenticationFilter authenticationFilter = new AuthenticationFilter();
authenticationFilter.setCasServerLoginUrl(serverUrlPrefix + "/login");
authenticationFilter.setServerName(serverName);
return authenticationFilter;
}
@Bean
public Filter casValidationFilter() {
final Cas20ProxyReceivingTicketValidationFilter casValidationFilter = new Cas20ProxyReceivingTicketValidationFilter();
final Cas20ServiceTicketValidator ticketValidator = new Cas20ServiceTicketValidator(serverUrlPrefix);
casValidationFilter.setTicketValidator(ticketValidator);
casValidationFilter.setServerName(serverName);
return casValidationFilter;
}
@Bean
public Filter postCASAuthenticationFilter() {
final PostCasAuthenticationFilter postCasAuthenticationFilter = new PostCasAuthenticationFilter();
if (adminList != null) {
List<String> admins = Arrays.asList(adminList.split(","));
postCasAuthenticationFilter.setAdmins(admins);
}
return postCasAuthenticationFilter;
}
}