如何实现SAML单点登录(SSO)

40

SAML单点登录通常如何实现?

我阅读了关于在Google应用程序中使用SAML的此篇文章(请注意,已过时),以及维基百科关于SAML的条目。

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

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

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

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

3个回答

30
这个工作原理是:在用户经过认证后,SAML身份提供者(IdP)会向浏览器呈现一个包含SAML响应的表单 - 表单的“action”(即目标)是服务提供商(SP)。在HTML中,有一个JavaScript onLoad事件提交表单,因此净效果是用户自动从IdP带着SAML响应到达SP。
仅当用户禁用了JavaScript时,才需要单击任何内容来提交表单。在这种情况下,SAML实现通常会在

4
OpenSSO已经停止维护,我相信它已经转生成为了OpenAM。 - user404345
你是正确的,@TobyHobson。我编辑了我的回答。 - metadaddy
1
文章链接已经失效了,还存在吗?谢谢。 - IcedDante
我正在使用simplesamlphp开发SSO请求,如何在xml主题中插入参数? - JokiRuiz
1
@JokiRuiz 你应该提出一个新问题 - 没有人会在这里看到它。 - metadaddy

6
这篇文章非常详细地解释了相关内容,还提供了不同平台的示例。请点击此处阅读。

是的,有用于发送认证请求的类,但没有用于接收请求、分析请求并发送响应的类。 - Ashwin
3
链接已经不存在。有更新吗? - Jerry
1
@Jerry,我用archive.org的缓存版本替换了损坏的链接。 - Taylor D. Edmiston

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接