add central logout support for springboot (#388)
* add dependence to generated metadata for springboot * add central logout support for springboot
This commit is contained in:
parent
cd67d874a2
commit
62cc93399f
|
|
@ -723,6 +723,7 @@ cas.validation-type=SAML
|
|||
|
||||
### Available optional properties
|
||||
|
||||
* `cas.single-logout.enabled`
|
||||
* `cas.authentication-url-patterns`
|
||||
* `cas.validation-url-patterns`
|
||||
* `cas.request-wrapper-url-patterns`
|
||||
|
|
|
|||
|
|
@ -58,6 +58,15 @@
|
|||
<artifactId>spring-context</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||
<optional>true</optional>
|
||||
<version>${springboot.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Test dependencies -->
|
||||
<dependency>
|
||||
<groupId>org.jasig.cas.client</groupId>
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@ package org.jasig.cas.client.boot.configuration;
|
|||
|
||||
import org.jasig.cas.client.authentication.AuthenticationFilter;
|
||||
import org.jasig.cas.client.authentication.Saml11AuthenticationFilter;
|
||||
import org.jasig.cas.client.session.SingleSignOutFilter;
|
||||
import org.jasig.cas.client.session.SingleSignOutHttpSessionListener;
|
||||
import org.jasig.cas.client.util.AssertionThreadLocalFilter;
|
||||
import org.jasig.cas.client.util.HttpServletRequestWrapperFilter;
|
||||
import org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter;
|
||||
|
|
@ -29,8 +31,10 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.Ordered;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
|
|
@ -40,6 +44,7 @@ import java.util.Collection;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.EventListener;
|
||||
|
||||
/**
|
||||
* Configuration class providing default CAS client infrastructure filters.
|
||||
|
|
@ -199,4 +204,25 @@ public class CasClientConfiguration {
|
|||
}
|
||||
this.casClientConfigurer = configurers.iterator().next();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnProperty(prefix = "cas", value = "single-logout.enabled", havingValue = "true")
|
||||
public FilterRegistrationBean casSingleSignOutFilter() {
|
||||
final FilterRegistrationBean singleSignOutFilter = new FilterRegistrationBean();
|
||||
singleSignOutFilter.setFilter(new SingleSignOutFilter());
|
||||
Map<String,String> initParameters = new HashMap<>(1);
|
||||
initParameters.put("casServerUrlPrefix", configProps.getServerUrlPrefix());
|
||||
singleSignOutFilter.setInitParameters(initParameters);
|
||||
singleSignOutFilter.setOrder(Ordered.HIGHEST_PRECEDENCE);
|
||||
return singleSignOutFilter;
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnProperty(prefix = "cas", value = "single-logout.enabled", havingValue = "true")
|
||||
public ServletListenerRegistrationBean<EventListener> casSingleSignOutListener(){
|
||||
ServletListenerRegistrationBean<EventListener> singleSignOutListener = new ServletListenerRegistrationBean<>();
|
||||
singleSignOutListener.setListener(new SingleSignOutHttpSessionListener());
|
||||
singleSignOutListener.setOrder(Ordered.HIGHEST_PRECEDENCE);
|
||||
return singleSignOutListener;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -115,6 +115,24 @@ public class CasClientConfigurationProperties {
|
|||
|
||||
private Boolean skipTicketValidation = false;
|
||||
|
||||
private SingleLogout singleLogout;
|
||||
|
||||
public static class SingleLogout{
|
||||
/**
|
||||
* whether to receive the single logout request from cas server.
|
||||
*/
|
||||
private boolean enabled = false;
|
||||
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
public void setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public String getServerUrlPrefix() {
|
||||
return serverUrlPrefix;
|
||||
}
|
||||
|
|
@ -242,4 +260,13 @@ public class CasClientConfigurationProperties {
|
|||
public void setSkipTicketValidation(final Boolean skipTicketValidation) {
|
||||
this.skipTicketValidation = skipTicketValidation;
|
||||
}
|
||||
|
||||
public SingleLogout getSingleLogout() {
|
||||
return singleLogout;
|
||||
}
|
||||
|
||||
public void setSingleLogout(SingleLogout singleLogout) {
|
||||
this.singleLogout = singleLogout;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue