gpt4 book ai didi

redirect - 我应该如何为 SAML WebSSO 配置文件实现 HTTP POST 协议(protocol)绑定(bind)?

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

我已经使用 HTTP POST 协议(protocol)绑定(bind)按照 Web SSO 的 SAML 配置文件实现了我的服务提供者和识别提供者。但是,对于身份提供者将如何提供 <AuthnStatement>,我有点困惑。如果来自服务提供者的 HTTP POST 未绑定(bind)到身份提供者上的 session 。

有人可以启发我如何做到这一点吗?

我可以使用的另一种方法是 HTTP 重定向绑定(bind),但这需要 User-Agent 干预(即浏览器),通常使用 User-Agent 作为传递中介来促进请求-响应消息交换。出于这个原因,我宁愿使用 HTTP POST,因为消息交换发生在服务器端,所以用户在他们的屏幕上看不到任何事情发生。

但是,就如何将 session 绑定(bind)到请求而言,使用 HTTP 重定向对我来说更有意义。由于 HTTP 重定向是通过 User-Agent 促进的,因此对 IdP 的请求将具有 session (如果之前已通过身份验证)。我不明白的是如何发送 <AuthnRequest>在 HTTP 重定向上。 JST 回答

所以我有点困惑,很想听听其他人在做什么。这是我的问题:

  • 使用带有 IsPassive 的 HTTP POST 协议(protocol)绑定(bind)选项 <AuthnRequest> ,如何将服务提供者发出的请求与身份提供者的 session 联系起来?换句话说,如果 POST 来自技术上是匿名 session 的服务提供者,身份提供者如何知道谁在发出请求?
  • 使用 HTTP 重定向协议(protocol)绑定(bind),如何发送 <AuthnRequest>如果我使用 HTTP 重定向,身份提供者? JST 回答


  • 更新

    如果我在上面的解释中不清楚,很抱歉造成混淆。我正在实现 IdP 和 SP(通过插件)。 IdP 是我希望 SP(第三方系统)用于身份验证(即 Web SSO)的现有应用程序。我目前正在开发一个简单的 PoC。 SP 实际上是一个第三方 Spring 应用程序,我正在为其开发一个插件来执行 SAML 操作。

    我应该提到我正在尝试使用 IsPassive选项,这意味着用户代理在消息交换期间不会发挥作用。它只是启动 SAML 派对的催化剂。对?考虑到这一点,假设用户在第 1 步是匿名的,SP 向 IdP 发送什么以允许 IdP 确定用户是否已通过身份验证?由于 IsPassive,HTTP POST 不会通过 User-Agent 发送

    更新

    问题 1 已修订: AuthnRequset 时 IdP 如何解析 Principal与 IsPassive 一起发送选项?

    直接来自 SAML 2.0 Profiles 文档,第 15 页,第 417 到 419 行:

    In step 4, the principal is identified by the identity provide by some means outside the scope of this profile.



    我真正想要的是解释如何实现 some means .

    最佳答案

    要记住的是,IdP 上的 session 与 SP 上的 session 之间没有任何联系。它们彼此不了解,仅通过 SAML 消息进行通信。 SP 发起的 SAML SSO 的一般步骤是:

  • 匿名用户访问 SP 的资源(页面)。
  • SP 标识用户需要在 IdP 进行身份验证。
  • SP 构造 AuthnRequest 并发送给 IdP。
  • IdP 进行某种身份验证,构建 SAML 响应并发送到 SP。
  • SP 验证响应,如果有效,则执行任何必要的操作来识别 SP 的用户并让他们访问最初请求的资源。

  • 是的,确实需要某种方式将 SP 的 AuthnRequest 连接到 IdP 的响应。 SAML 规范涵盖了这一点:SP 的 AuthnRequest 包含一个 ID 值,来自 IdP 的相应响应必须包含一个带有该 ID 值的 InResponseTo 属性(在其 SubjectConfirmationData 元素上)。身份验证请求协议(protocol)还允许 SP 将 RelayState 参数传递给 IdP,然后要求 IdP 将其与 SAML 响应一起原封不动地传递。您(在 SP 角色中)可以使用该 RelayState 值来捕获允许用户被中继到最初请求的资源的状态信息。

    这意味着当您实现 SP 时,您将需要一些机制来记录 ID 和 RelayState 值,并且您的 Response 处理需要验证它接收到的 InResponseTo 和 RelayState 值。如何选择创建和解释 RelayState 值取决于您,但请记住,存在长度限制。 (我们使用与本地保存的状态数据相对应的随机 GUID 值,这具有额外的优势,即不会为 RelayState 值提供任何含义提示。)

    IdP 如何知道谁在提出请求? AuthnRequest 必须包含一个标识 SP 的 Issuer 元素。它还可能包含一个 AssertionConsumerServiceURL(将响应发送到的 URL),或者 IdP 可能具有颁发者到正确 URL 的本地映射。

    如何使用 HTTP 重定向发送 AuthnRequest?除了使用 GET 而不是 POST 之外,使用 POST 发送的 AuthnRequest 与重定向之间的唯一区别是 AuthnRequest XML 必须被压缩(使用 DEFLATE 编码)。

    希望能回答你的大部分问题。

    关于redirect - 我应该如何为 SAML WebSSO 配置文件实现 HTTP POST 协议(protocol)绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4884192/

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