39

SAML SSO 通常是如何实现的?

我已经阅读了这篇(nb obsolete)关于将 SAML 与 Google Apps 一起使用的内容,以及关于SAML的维基百科条目。

维基百科条目讨论了使用包含 SAMLRequest 和 SAMLResponse 详细信息的表单进行响应。这是否意味着用户必须亲自提交表单才能继续进行单点登录?

谷歌条目谈到使用重定向,这对我来说似乎更无意义。然而,它也谈到了使用表单作为用户必须提交的响应(尽管它确实谈到了使用 JavaScript 自动提交表单)。

这是这样做的标准方式吗?使用重定向和 JavaScript 提交表单?

有谁知道有关如何在 Windows 域和 J2EE Web 应用程序之间实现 SSO 的任何其他好的资源。Web 应用程序位于单独的网络/域上。我的客户想要使用CA Siteminder(带有 SAML)。

4

3 回答 3

30

其工作方式是,在对用户进行身份验证后,SAML 身份提供者 (IdP) 将包含 SAML 响应的表单呈现给浏览器 - 表单的“操作”(即目标)是服务提供者 (SP)。在 HTML 中,有一个提交表单的 JavaScript onLoad 事件,因此最终效果是用户被自动从 IdP 带到 SP,SAML 响应在手。

唯一一次用户必须点击任何东西来提交表单是如果他们禁用了 JavaScript。在这种情况下,SAML 实现通常会提供带有按钮的消息,以便在<noscript>标签中按下。

有关更多详细信息,请参阅我几年前写的这篇文章- 但请注意,“灯泡”现在早已过时 - 对于 PHP SAML,请参阅simpleSAMLphp

很遗憾您的客户想要使用 CA SiteMinder - 开源OpenAM(以前称为 OpenSSO)很容易做到这一点。

于 2009-05-02T23:29:09.250 回答
6

这篇文章解释的很好。也有针对不同平台的示例。

于 2011-12-07T15:59:47.000 回答
0

如果 Siteminder 是依赖方,那么您需要编写一个自定义代理来获取 SAML 工件并创建一个 SM-Session。否则,您将需要购买已构建此功能的产品。

于 2009-05-02T12:24:12.030 回答