gpt4 book ai didi

angularjs - Spring Security SAML 断言到期与应用程序 session 到期

转载 作者:行者123 更新时间:2023-12-04 14:11:38 24 4
gpt4 key购买 nike

我对 SAML 断言到期与应用程序 session 到期感到困惑。

简单来说,当我们在容器中部署应用程序时,就会创建一个 session 。可以使用 web.xml 中的以下条目来控制此 session 到期

<session-config>
<session-timeout>60</session-timeout>
</session-config>

继续前进,当我拥有带有 SAML 扩展的 Spring Security 时,显然同样的 session 概念也适用。 (我在 WildFly 8.2 中部署应用程序,如果这很重要的话)

此外,当应用程序 session 到期时,注销行为似乎等同于本地注销的概念。

到现在为止还挺好。现在假设 SAML 断言有效 2 小时,并且用户已经积极工作了 2 小时。那么后续的请求应该怎么办呢?是否应该重新登录 IDP?但是,这不会给用户带来不便吗?如果应用程序在断言过期 2 小时后重定向到 IDP 再次登录,应该如何处理 AJAX 请求?

这是引用 the question here

最佳答案

Spring SAML 发出 ExpiringUsernameAuthenticationToken对于经过身份验证的用户。 token 在其 isAuthenticated() 中开始返回 false用于验证用户身份的 SAML 断言到达其 sessionNotOnOrAfter 时的方法时间。

可以通过覆盖 SAMLAuthenticationProvider 来禁用此行为。和改变方法getExpirationDate(credential) ,它返回断言到期的时间,或 null以防它永远不会。然后应用程序将完全依赖容器中配置的 session 过期。

一旦ExpiringUsernameAuthenticationToken过期,Spring Security 会将当前 token 传递给 AuthenticationManager (在 <security:authentication-manager> 下的 securityContext.xml 中配置)。

您可以通过添加自己的 AuthenticationProvider 来影响接下来发生的事情。能够处理ExpiringUsernameAuthenticationToken .否则系统将失败并显示 ProviderNotFoundException或其他一些AuthenticationException喜欢 BadCredentialsException (如果您同时使用用户名/密码身份验证)。

该异常随后由 ExceptionTranslationFilter 处理。 ,通过调用配置的身份验证 EntryPoint 开始新的身份验证过程- 例如SAMLEntryPoint它要么使用默认 IDP 启动身份验证,要么显示 IDP 选择页面。正如您所说,该过程还将基本上执行本地注销。

默认情况下,系统对所有 HTTP 调用的行为相同 - AJAX 与否。您可以通过将 API 和普通 URL 拆分为单独的 <security:http> 来定义不同的行为。元素和使用不同EntryPoints (界面 AuthenticationEntryPoint )。例如 Http403ForbiddenEntryPoint可能适合您的 AJAX 调用。

关于angularjs - Spring Security SAML 断言到期与应用程序 session 到期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29954876/

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