如何实现SAML SSO

时间:2009-04-30 09:38:52

标签: java security single-sign-on saml

如何实施SAML SSO?

我已阅读this(n.b.已废弃)关于在Google Apps上使用SAML以及SAML上的维基百科条目。

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

谷歌条目谈到使用重定向,这对我来说似乎更无聊。但是,它还讨论了使用用户必须提交的响应表单(尽管它确实讨论了使用JavaScript自动提交表单)。

这是标准的做法吗?使用重定向和JavaScript进行表单提交?

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

3 个答案:

答案 0 :(得分:29)

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

用户必须单击任何内容才能提交表单,只有他们禁用了JavaScript。在这种情况下,SAML实现通常会提供一条消息,其中包含一个按钮,可以按下<noscript>标记。

有关详细信息,请参阅this article I wrote a few years ago - 但请注意,'Lightbulb'现在已经过时了 - 对于PHP SAML,请参阅simpleSAMLphp

您的客户希望使用CA SiteMinder是一种耻辱 - 开源OpenAM(以前称为OpenSSO)非常容易实现。

答案 1 :(得分:5)

This article解释得非常好。也有不同平台的例子。

答案 2 :(得分:0)

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