2013-07-18 86 views
1

我已经浏览过类似的问题,并且已经阅读了关于SAML 2.0的几篇文章,但是我仍然无法理解SAML Auth Request。SAML 2.0身份验证请求的用途和用途是什么?

我已经实施了几个基于SAML的SSO解决方案,其中我的公司是IdP(身份提供商)。我们一直通过SAML Response将我们网站上的用户发送给第三方:

  1. 用户登录我们的网站。
  2. 用户点击我们网站上的特殊链接。
  3. 我们准备了SAML Response XML。
  4. 我们用我们的私钥对它进行电子签名。
  5. 将其作为HTML表单中的隐藏字段与“RelayState”参数一起发送回用户的浏览器。
  6. 我们将此表单自动发布到SP(服务提供商)URL。

就是这样。

SAML 2.0的文章(例如,Wikipedia overview article on SAML 2.0)认为,我们缺少一个步骤:“SAML验证请求”。似乎SP需要首先向IdP(我们)发送“SAML Auth请求”来启动SSO,然后我们应该使用SAML Response做出响应。

SP如何决定何时初始化SSO? SP甚至不知道我们会用他们的方式发送用户。用户当前登录到我们的网站,当用户点击该链接时,用户可以“神奇”地在SP网站上对其进行身份验证。

谢谢!

P. S我知道SAML 2.0是“行业标准”,但我越用它 - 越觉得它是一种矫枉过正。由于其复杂性,有很多不同的不兼容实现(从我的经验来看)。每次我们与新合作伙伴一起做SSO时 - 这是一种痛苦。大型公司正在大量出售“开箱即用”的SAML解决方案,这些解决方案没有人知道如何正确配置和排除故障,因此人们几乎被迫为昂贵的承包商付费。公司希望能够雇用低薪雇员来支持那些过于复杂的SAML解决方案。在与第三方建立单点登录时,我经常与那些不知道它是什么的人打交道,他们只是通过点击按钮并通过电话向我读取隐藏的错误消息。这全部归功于SAML过度设计。但是,嘿 - 有一个很好的一面:我的薪水真的很好,因为我理解SAML的程度至少可以让它工作。 :)

回答

3

您正在使用在规范中指定的所谓未经请求的响应,因此您不是“缺少一个步骤”。它4.1.5下指定在SAML profile spec

正常使用情况是用户试图登录到SP和SP用户重定向到IDP进行认证。

您可以选择的一种实现是您的门户只是将用户重定向到SP。如果SP检测到用户没有会话,SP将开始对IDP的正常SSO

+0

很好的答案 - 谢谢!这现在非常有意义。 –

+0

只需添加,触发IdP启动的SSO实际上并不是标准的一部分,但该页面Stefan链接解释了触发后会发生什么。大多数IdP只有某种URL或重定向来执行它 - Shibboleth IdP有一个端点,记录在:https://wiki.shibboleth.net/confluence/display/SHIB2/IdPUolicolicSSO – Martin