gpt4 book ai didi

java - SAML 身份验证的用户不会出现在 Spring Security 的 SessionRegistry 中

转载 作者:行者123 更新时间:2023-11-30 07:03:08 36 4
gpt4 key购买 nike

我们的应用过去只有一种登录方式:用户名和密码。一旦新用户登录到应用程序,他们的 session 将出现在 Spring Security 的 SessionRegistry 中。

现在我正在 Spring SAML 的帮助下实现 SAML 支持。我将设置主要面向 sample application's configuration .一切正常。但是我注意到,通过 SAML 登录的用户不会将他们的 session 添加到 SessionRegistry

基于表单的身份验证的常用上下文文件包含以下内容:

<session-management 
invalid-session-url="/login"
session-fixation-protection="newSession"
session-authentication-error-url="/login?invalid_session=1">

<concurrency-control
max-sessions="1"
error-if-maximum-exceeded="false"
session-registry-alias="springSessionRegistry"/>

</session-management>

在我的 SAML 配置的 http 元素中,我添加了相同的内容。这创建了一个新的 SessionRegistry 但它不包含任何内容。我也试过了

<concurrency-control session-registry-ref="springSessionRegistry"/>

但这也不包含任何 SAML 身份验证 session 。

那么我怎样才能访问 SAML session 呢?

最佳答案

问题在于 Spring Security 的 bean 定义解析器只会自动将基于 session-managementconcurrency-control 创建的 bean 链接到核心 Spring 中包含的身份验证处理器安全模块。这意味着,未调用 SAMLProcessingFilter.setSessionAuthenticationStrategy()

您应该能够通过以下方式声明 samlWebSSOProcessingFilter bean(它指的是由 concurrency-control 元素自动创建的并发 bean)来让它工作:

<bean id="samlWebSSOProcessingFilter" class="org.springframework.security.saml.SAMLProcessingFilter">
<property name="authenticationManager" ref="authenticationManager"/>
<property name="authenticationSuccessHandler" ref="successRedirectHandler"/>
<property name="authenticationFailureHandler" ref="failureRedirectHandler"/>
<property name="sessionAuthenticationStrategy" ref="org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy#0"/>
</bean>

关于java - SAML 身份验证的用户不会出现在 Spring Security 的 SessionRegistry 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28609047/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com