如何强制 spring-saml-extension 每次都重新进行身份验证?

Posted

技术标签:

【中文标题】如何强制 spring-saml-extension 每次都重新进行身份验证?【英文标题】:How can I force spring-saml-extension to re-authenticate everytime? 【发布时间】:2015-03-05 21:30:12 【问题描述】:

我最近成功运行了使用 ADFS 2.0 的 spring-saml-sample。

但是我注意到,ADFS 只询问我一次我的用户/密码,然后我可以输入任意多次,但始终使用同一个用户(即使我进行了全局注销)。

似乎有一个 cookie 或本地存储的东西被发送到 ADFS。

如果我想对同一台机器上的不同用户进行身份验证怎么办?如何配置 saml-extension 以再次强制身份验证?

【问题讨论】:

【参考方案1】:

SAML 包含一种强制 IDP 重新验证用户身份的机制,称为强制身份验证。您可以通过将WebSSOProfileOptions 中的标志forceAuthn 设置为true 来启用它。您可以在Spring SAML manual, chapter 9.2.1 中找到有关设置的更多详细信息。

【讨论】:

再次感谢弗拉德。我在文档上只找到了一点东西。属性forceAuthn 实际上是forceAuthN。至少它是如何为我工作的。可能是我有旧版本的 saml-extension。 嗯...@Vladimír-Schäfer 这很奇怪。 WebSSO 配置文件定义为:<bean class="org.springframework.security.saml.websso.WebSSOProfileOptions"> <property name="includeScoping" value="false" /> <property name="forceAuthN" value="true" /> <property name="passive" value="false" /> </bean> 但是没有效果。 那我怕ADFS不支持这个SAML功能。或者您可能在 ADFS 端使用 HTTP-Basic 身份验证?如果是这种情况,您将需要重新启动浏览器以重新进行身份验证,这是 HTTP-Basic 的限制,并且没有解决方法 afaik。 ADFS 传统上一直支持 ForceAuthn。如果它不起作用,请检查您的更新和修补程序级别(或报告错误)。 后来我意识到这个评论可能被解释为与弗拉基米尔相矛盾。那不是本意。 ADFS 的 ForceAuthn 表示:不使用 cookie 身份,进行真实身份验证。取决于许多事情,真正的身份验证可能是完全不可见的(对用户而言)。【参考方案2】:

除了弗拉基米尔的回答之外,如果您即使在全局注销后仍能够继续登录,您也应该检查一下。全局注销后,应删除所有 SP 和 IDP 会话,因此理想情况下您应该无法使用该站点。

【讨论】:

谢谢,我也去看看。 另外,请注意,如果某些 IDP 不完全符合规范,则可能不支持该标志。 我认为 adfs 2.0 会发生这种情况。我会调查是否可以删除 cookie 或类似的东西。谢谢! 嗨 Rob,你成功了吗?在我们的例子中,ADFS 是第一次删除 cookie。但是当用户重新登录然后注销时,它不会清除 cookie,它也会停留在 ADFS 注销页面上,而不是将用户重定向到应用程序。

以上是关于如何强制 spring-saml-extension 每次都重新进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

强制自己

如何在父组件中强制刷新子组件

css 如何控制span 强制换行

如何让安卓手机强制4G网络模式

如何强制系统关闭底层套接字

当数据库强制加入时,如何强制执行更好的执行计划?