sp发起saml sso认证
sp initiated saml sso authentication
我正在研究 SP 发起的 saml sso,这对我来说是全新的。我浏览了很多文章和视频(维基百科、centrify chalktalk、medium posts)但我无法理解其中的一些内容:
saml 断言是 SAML 令牌吗?如果不是,那么它是如何生成的?
假设我有一个基于 saml 的 IdP 和两个启用 saml 的 SP。现在在纯粹的 post 绑定中,当我登录到其中一个 SP,然后登录到第二个 SP 时,第二个 SP 如何让我登录?更准确地说,第二个 SP 如何知道用户已经登录到第一个 SP?决定它的参数是什么? (我能得到更底层的解释吗)。
IdP 是否将有关会话的数据存储在 cookie 中,或者是否还有其他我遗漏的东西。
如果有任何基于此的文章,请 post 他们。
谢谢。
是的,断言本身通常是一个完全可移植的令牌,但是有一些方法可以将它绑定到请求者的密钥。
第二个 SP 现在用户已经登录。SP 会将用户重定向到 IDP,并向 IDP 发出身份验证请求。 IDP 通常在第一次验证时为用户保存一个 cookie,这不是由 SAML 指定的,但通常是如何完成的。当用户到达 IDP 时,IDP 查看 cookie,如果用户身份验证仍然有效,IDP 会自动向 SP 发送有效的 Assertion/token。 SP 可以通过在身份验证请求中指定 ForceAuthn 属性来覆盖此行为。
至于资源,我会推荐来自 OASIS 的 SAML 技术概述 http://www.oasis-open.org/committees/download.php/27819/sstc-saml-tech-overview-2.0-cd-02.pdf
我先回答你的具体问题点:
1) Is the saml assertion the SAML token? if not, then how is it
generated?
-这只是同一事物的术语。 SAML 断言和 SAML 令牌是同一回事。有 2 种不同的 SAML assertions/tokens 对您来说很重要,需要重点关注。 SAML 请求和 SAML 响应。 SAML 请求是在 SP 发起的 SAML SSO 中从 SP 发送到 IDP 的内容。 SAML 响应是作为 SP 发起的最后一部分或在 IDP 发起的 SAML SSO 期间从 IDP 发送到 SP 的内容。 SP发起是指用户在SP app启动,重定向到IDP进行认证,再由IDP发回SP app。 IDP 启动是指用户从 IDP 开始,然后直接转到 SP。 SAML 断言只是 XML 已签名、转换为字符串和 base 64 编码。它们与用户一起从 SP 重定向到 IDP 并返回。
2) Suppose i have a saml based IdP and two saml enabled SP. Now in a
purely post binding, when i login to one of the SP and then login to
the second SP, How does the second SP log me in? To be more precise,
how does the second SP know that the user is already logged into first
SP? What is that parameter(s) that decides it? (can i get more low
level explanation on this). Does the IdP store data in cookie about
the session or is there something else that i am missing out.
-这是您的 IDP 所特有的。作为 Centrify SME,我可以告诉您 Centrify 和类似的 IDP 是如何工作的。当用户登录 IDP 时,无论是从 SP 发起的重定向、他们公司机器上的 IWA,还是直接登录到 IDP 本身,都会向浏览器添加一个 cookie。对于 Centrify,此 cookie 称为 .ASPXAUTH。每次用户在登录后被带到 IDP 时,都不会提示他们再次登录。因此,如果用户从 SP1 开始,被重定向到 IDP、登录并被重定向回来,则 cookie 已由 IDP 设置。现在,如果他们转到 SP2,默认情况下 SP 也会重定向到 IDP,但由于设置了 cookie,IDP 不会再次提示进行身份验证。因此,用户不会注意到重定向,IDP 只会使用适当的 SMAL 响应将它们发送回 SP2。所以像这样:
SP1 > SAML 请求并重定向到 IDP > 登录 IDP 并设置 cookie> SAML 响应并重定向回 SP1 > 导航到 SP 2 > SAML 请求并重定向到 IDP > Cookie 已设置,因此立即重定向回到带有 SAML 响应的 SP。
Centrify 也有 API 可供 SP 使用。例如,SP 可以在客户端 API 调用 /security/whoami 以查看是否存在有效的 ASPXAUTH cookie。因此 SP2 可以检查有效的 cookie 并决定完全重定向,因为 cookie 已经设置。 https://developer.centrify.com/reference-link/securitywhoami
希望这对您有所帮助。我在 Centrify 时用 C# 写了一个非常基本的例子。您可以在此处找到代码 https://github.com/centrify/CentrifySAMLSDK_CS. Feel free to reach out here with more questions or find me on twitter https://twitter.com/NickCGamb
我正在研究 SP 发起的 saml sso,这对我来说是全新的。我浏览了很多文章和视频(维基百科、centrify chalktalk、medium posts)但我无法理解其中的一些内容:
saml 断言是 SAML 令牌吗?如果不是,那么它是如何生成的?
假设我有一个基于 saml 的 IdP 和两个启用 saml 的 SP。现在在纯粹的 post 绑定中,当我登录到其中一个 SP,然后登录到第二个 SP 时,第二个 SP 如何让我登录?更准确地说,第二个 SP 如何知道用户已经登录到第一个 SP?决定它的参数是什么? (我能得到更底层的解释吗)。 IdP 是否将有关会话的数据存储在 cookie 中,或者是否还有其他我遗漏的东西。
如果有任何基于此的文章,请 post 他们。
谢谢。
是的,断言本身通常是一个完全可移植的令牌,但是有一些方法可以将它绑定到请求者的密钥。
第二个 SP 现在用户已经登录。SP 会将用户重定向到 IDP,并向 IDP 发出身份验证请求。 IDP 通常在第一次验证时为用户保存一个 cookie,这不是由 SAML 指定的,但通常是如何完成的。当用户到达 IDP 时,IDP 查看 cookie,如果用户身份验证仍然有效,IDP 会自动向 SP 发送有效的 Assertion/token。 SP 可以通过在身份验证请求中指定 ForceAuthn 属性来覆盖此行为。
至于资源,我会推荐来自 OASIS 的 SAML 技术概述 http://www.oasis-open.org/committees/download.php/27819/sstc-saml-tech-overview-2.0-cd-02.pdf
我先回答你的具体问题点:
1) Is the saml assertion the SAML token? if not, then how is it generated?
-这只是同一事物的术语。 SAML 断言和 SAML 令牌是同一回事。有 2 种不同的 SAML assertions/tokens 对您来说很重要,需要重点关注。 SAML 请求和 SAML 响应。 SAML 请求是在 SP 发起的 SAML SSO 中从 SP 发送到 IDP 的内容。 SAML 响应是作为 SP 发起的最后一部分或在 IDP 发起的 SAML SSO 期间从 IDP 发送到 SP 的内容。 SP发起是指用户在SP app启动,重定向到IDP进行认证,再由IDP发回SP app。 IDP 启动是指用户从 IDP 开始,然后直接转到 SP。 SAML 断言只是 XML 已签名、转换为字符串和 base 64 编码。它们与用户一起从 SP 重定向到 IDP 并返回。
2) Suppose i have a saml based IdP and two saml enabled SP. Now in a purely post binding, when i login to one of the SP and then login to the second SP, How does the second SP log me in? To be more precise, how does the second SP know that the user is already logged into first SP? What is that parameter(s) that decides it? (can i get more low level explanation on this). Does the IdP store data in cookie about the session or is there something else that i am missing out.
-这是您的 IDP 所特有的。作为 Centrify SME,我可以告诉您 Centrify 和类似的 IDP 是如何工作的。当用户登录 IDP 时,无论是从 SP 发起的重定向、他们公司机器上的 IWA,还是直接登录到 IDP 本身,都会向浏览器添加一个 cookie。对于 Centrify,此 cookie 称为 .ASPXAUTH。每次用户在登录后被带到 IDP 时,都不会提示他们再次登录。因此,如果用户从 SP1 开始,被重定向到 IDP、登录并被重定向回来,则 cookie 已由 IDP 设置。现在,如果他们转到 SP2,默认情况下 SP 也会重定向到 IDP,但由于设置了 cookie,IDP 不会再次提示进行身份验证。因此,用户不会注意到重定向,IDP 只会使用适当的 SMAL 响应将它们发送回 SP2。所以像这样:
SP1 > SAML 请求并重定向到 IDP > 登录 IDP 并设置 cookie> SAML 响应并重定向回 SP1 > 导航到 SP 2 > SAML 请求并重定向到 IDP > Cookie 已设置,因此立即重定向回到带有 SAML 响应的 SP。
Centrify 也有 API 可供 SP 使用。例如,SP 可以在客户端 API 调用 /security/whoami 以查看是否存在有效的 ASPXAUTH cookie。因此 SP2 可以检查有效的 cookie 并决定完全重定向,因为 cookie 已经设置。 https://developer.centrify.com/reference-link/securitywhoami
希望这对您有所帮助。我在 Centrify 时用 C# 写了一个非常基本的例子。您可以在此处找到代码 https://github.com/centrify/CentrifySAMLSDK_CS. Feel free to reach out here with more questions or find me on twitter https://twitter.com/NickCGamb