我尝试运行启动示例 spring security saml boot,https://github.com/vdeotaris/spring-boot-security-saml-sample https://github.com/vdenotaris/spring-boot-security-saml-sample
我能够运行它并与身份提供商集成。
但是,我看到每次都会创建一个会话,并保持持久状态,直到用户退出。
我正在使用基于资源的服务和 Spring Boot,因此不希望产生会话开销。
我尝试将以下行添加到配置方法中,
http.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
但是,通过此设置,我总是被要求登录身份提供程序。
如果我登录,它会返回页面,要求我循环再次登录。
我不确定禁用会话时这是否是正确的行为。
任何人都可以为我提供正确的方法来使用带有 spring security saml 扩展和服务提供商应用程序的无状态会话。
Thanks,
Sri
对于 SAML 身份验证部分,您肯定需要一个会话,因此您有 2 个选项:
1) 您的应用程序中有 2 个不同的安全上下文,一种用于 SAML 身份验证,另一种用于无状态服务。不确定如何对您的服务进行身份验证,但它必须具有某种令牌身份验证才能使其成为无状态。
您可以定义 2WebSecurityConfigurerAdapter
并覆盖configure(HttpSecurity http)
方法。然后使用http.requestMatchers("/saml/**")
在 saml 配置中和http.requestMatchers("/service/**")
在您的服务配置和下面的所有内容中/saml
将通过 saml auth 和下面的所有内容/service
将会经历你所拥有的一切。
2) 将更多过滤器添加到 SAML 配置(在 saml 过滤器之前),以便它可以使用不同类型的身份验证(例如基于令牌),并且只要此过滤器可以生成有效的Authentication
在 saml 过滤器之前你应该很好。
您还可以查看这个库:https://github.com/ulisesbocchio/spring-boot-security-saml https://github.com/ulisesbocchio/spring-boot-security-saml简化您的 SAML 配置
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)