我有一个客户想要使用基于SAML2断言的方法实现SSO。客户将是身份提供商(IDP),我的应用程序将有效地成为服务提供商(SP)。
过去我实施了SSO解决方案,其中IDP是Oracle Access Manager,因此我们获得了idp.xml文件,该文件允许我们使用提供的Fedlet配置我们的SP环境。这方便地创建了一个相关的WAR文件,在部署时,允许我将sp.xml文件分发给将其导入IDP的客户。这一切都运行良好,我理解概念,即我们收到初始请求,fedlet处理这个并将用户带到他们认证的IDP,然后他们通过SAML响应传递回我们的SP,Fedlet允许我们解析并提取一些识别用户的数据。然后,我会按照要求将它们签入我们的应用程序。
然而,目前的要求是没有使用任何后端框架来提供IDP,他们已经声明它是定制的。他们给了我IDP URL和一个证书文件,并要求我们提供“AssertionConsumerServiceURL”和“AudienceURI”。
我正在启用SSO的应用程序主要是基于Java的。到目前为止,我的调查使我得到了Forgerock的OpenAM解决方案以及Shibboleth的OpenSAML。然而,我正在努力迈出第一步,基本上我开始构建一个使用OpenAM / Shibboleth / AnotherFramework连接到第三方IDP的自定义SP应用程序。
任何指针都非常有用。
谢谢, 利
答案 0 :(得分:1)
取决于您的要求。 OpenAM feldlet或Shibboleth我可能是最好的方法,因为你不必自己编写这么多代码。
OpenSAML是一个用于处理SAML消息的非常低级别的工具包。如果不是真的需要,我不会推荐它。
至于他们要求的东西,AssertionConsumerServiceURL是您收到SSO SAML消息的服务端点。
AudienceURI的定义非常灰暗。基本上,您向他们发送一个标识符,他们在消息中包含此标识符,并验证标识符与您提供的标识符相同。我自己不明白这和目的地之间的区别......
我有点惊讶他们问你这个。首次交换信息的标准方法是通过SAML元数据文档。
答案 1 :(得分:0)
您可能知道OpenAM还提供了FedLet,它是一个轻量级的SAML2.0 SP实现。如果你想自己动手,你必须自己构建一个SAML2.0 SP。
如果您想使用Spring,您还可以使用Spring Security SAML2扩展程序..'http://static.springsource.org/spring-security/site/extensions/saml/index.html'
答案 2 :(得分:0)
为什么推出那些沉重的SAML解决方案?您是否从Ping身份了解PingOne APS(应用程序提供商服务)或PingFederate?您可以在不到一天的时间内实施APS,并且您的第一个客户配置是免费的。包括仪表板报告,配置的IDP自助服务功能以及适用于您的应用程序的简单REST API集成。 [注意:我为Ping工作。]
答案 3 :(得分:0)
您可以设置Spring Security SAML扩展。该扩展程序会创建一个AssertionConsumerServiceURL,如果他们想要访问您的元数据,就像访问他们的元数据一样,他们只需要访问www.yourwebsite.com/saml/metadata,他们就会下载您的SP元数据。