2016-06-28 41 views
1

无状态会话我试图运行从引导样品春季安全SAML启动, https://github.com/vdenotaris/spring-boot-security-saml-sample使用Spring Security SAML和SP应用

我可以运行它,并与身份提供商整合。

但是,我发现会话每次都会创建并保持不变,直到用户注销。

我使用基于资源的服务与春季启动,所以不希望会议的开销。

我尝试添加下面的线到配置方法, http.sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.STATELESS);

但是,在此设置下,我总是被要求登录身份提供者。

如果我登录,它会回到页面,要求我在循环中重新登录。

我不确定这是禁用会话时的正确行为。

任何人都可以提供正确的方法来使用Spring Security saml扩展和服务提供者应用程序的无状态会话。

感谢,

斯里兰卡

回答

2

你需要一个会议肯定了SAML认证部分,所以你有两个选择:

1)有2个不同的安全环境在您的应用程序,一个用于SAML身份验证,另一个用于无状态服务。不知道你将如何验证你的服务,但它必须有某种令牌认证,因为它是无状态的。 您可以定义2 WebSecurityConfigurerAdapter并覆盖configure(HttpSecurity http)方法。然后在saml配置文件中使用http.requestMatchers("/saml/**"),在您的服务配置中使用http.requestMatchers("/service/**"),并且在/saml下的所有内容都将通过saml身份验证,并且/service下的所有内容都会经过您的其他任何服务。

2)在SAML配置中添加更多的过滤器(在saml过滤器之前),以便它可以使用不同类型的auth(例如基于令牌),并且只要此过滤器能够生成有效的Authentication saml过滤器之前,你应该是好的。

你也可以看看这个库:https://github.com/ulisesbocchio/spring-boot-security-saml来简化你的SAML配置