gpt4 book ai didi

saml - 将用户从 SP 注销但不从 IDP 注销

转载 作者:行者123 更新时间:2023-12-01 09:12:09 25 4
gpt4 key购买 nike

是否可以让用户退出使用 SAML 身份验证的应用程序,但让他们保持登录到 IDP,以便他们可以继续访问其他服务提供商?

我希望能够将用户从应用程序中注销,并让他们在返回应用程序时进行身份验证,而不是将他们从 IDP 中注销(即我不想使用单点注销)。这对 SAML 可行吗?

最佳答案

在执行单点注销时,没有标准的方法来排除 IDP session 的终止。此外,在保持其他 session 参与者打开的同时终止与单个 session 参与者(单个服务提供商)的 session 显然超出了 SAML 2.0 单点注销配置文件的范围(请参阅 saml-profiles-2.0-os.pdf,第 1139-1143 行) .所以那不是要走的路。

但还有另一种解决方案。您可以在服务提供商处使用本地注销(例如,简单地使本地 HTTP session 无效),并在向 IDP 发送 AuthnRequest 时将其与属性 ForceAuthn 结合使用(参见 saml-core-2.0-os,第 2042 行)。将 ForceAuthn 属性设置为 true 会强制身份提供者对用户进行身份验证,即使存在现有 IDP session 也是如此。

整个流程可能是这样的:

  1. 用户访问SP,需要进行身份验证
  2. SP 向 IDP 发送 SAML 2.0 AuthnRequest 并将 ForceAuthn 标志设置为 true
  3. IDP 强制用户进行身份验证并响应 SP
  4. SP 在验证响应后创建本地 session
  5. 用户注销 SP 应用程序,仅终止本地 session ,不会干扰 IDP session 或其他 SP 的 session

将 ForceAuthn 标志设置为 true 会有效地禁用单点登录,因此您可能希望使用一些 SP 端逻辑来确定是否使用该标志。

设置了标志的有效请求示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<saml2p:AuthnRequest AssertionConsumerServiceIndex="0"
AttributeConsumingServiceIndex="myServiceID"
Destination="https://idp.ssocircle.com:443/sso/SSOPOST/metaAlias/ssocircle"
ForceAuthn="true" ID="a228aje276h0id1g48eihj5gfj9h8bi"
IsPassive="false" IssueInstant="2014-04-11T22:07:05.438Z"
Version="2.0" xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol">
<saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">urn:test:sp</saml2:Issuer>
</saml2p:AuthnRequest>

关于saml - 将用户从 SP 注销但不从 IDP 注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23021870/

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