如何使用SAML和Shibboleth实现或集成单点登录

per*_*ser 12 java saml shibboleth single-sign-on

我们有两个独立的产品,包括网络应用和服务器.

我们希望为它们实现单点登录,因此当用户登录到一个产品时,他可以自动访问属于他的其他产品中的资源.

我已经进行了一些探索,发现SAML是一种很好的方法,我们可以采取,但我们不确定如何继续.

实施我们自己的服务提供商是个好主意吗?我看过Shib SP,但看起来如果我想将它集成到我的产品中,它也不会那么容易.

所以我只是寻找之前遇到类似问题的人的一些建议.

另一个问题是,如果我需要使用OpenSaml实现SP,我可以学习哪些资源?看起来我没有很多可以参考的教程或示例.

如果有人能指出我自己的SP需要包含的一些大程序或组件,我也会非常感激.

编辑1:

试着提供我想要的更多细节.我们有两个独立的产品.目前,我们能够外部化用户数据库.例如,我们的产品可以被配置为连接到LDAP服务器或任何其他外部用户DB,只要它们正确实现服务即可.

现在我们的目标是为我们的两种产品提供SSO.一种情况是我们在两种产品中都有自己的SP组件(实现或集成).客户可能拥有自己的IdP.通过一些配置,我们的SP可以连接到他们的IdP,并从那里进行身份验证,用户无需登录两次即可访问这两种产品.当然,如果客户没有,我们可以提供开箱即用的IdP.

Wil*_*ung 13

Shibboleth最大的困难在于它实际上是SAML v2.0规范的参考实现.

但是,对于大多数例行安装,您实际上只需要很少的SAML规范来为SSO启用几个Web应用程序.

但是,由于Shibboleth实现了整个功能,并且具有所有功能,因此可以配置它.

我们与Shibboleth做了一个项目(并且它确实是一个边缘用例),而且,对我来说,当时是一个SAML新手,这真的是一件苦差事,让一切都工作起来.

对于我们的下一次尝试,我通过Web Profile查看了SSO 的SAML规范.如果您阅读它,对于这个有限的用例实际上非常简单.我们决定不再使用Shibboleth,而是使用OpenSAML库编写自己的IdP和SP.

我们能让Shibboleth更快地工作吗?大概.但我认为我们不会理解我们自己做的事情.一点不发明 - 当然,确实如此,但是当你理解软件和词汇时,这些东西会让人感到困惑,更不用说了.SAML充满了新的词汇.

您还可以考虑将SimpleSAML用作IdP,并为您的Web应用编写自己的SP.SimpleSAML是PHP版本,但它更加用户友好.您可以将其视为自包含的Apache服务.

我会说我们的SP大约有1000行javadoc代码,但它主要是将OpenSAML连接起来和一些实用程序的东西.事实上,这并不可怕.尽可能准备好阅读已签名的XML blob.

令人沮丧的是,这实际上并不简单,但它对于收养等有点鸡肉/鸡蛋的事情.

如果这些都不适合您,您可以查看OAuth2及其部分配置文件.