当前位置: 首页 > 知识库问答 >
问题:

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

仉宸
2023-03-14

我们有两个独立的产品,都包括Web应用程序和服务器。

我们希望为这两个产品都实现单点登录,这样当用户登录到一个产品时,他可以自动访问属于他的另一个产品中的资源。

我已经探索了一点,发现SAML是我们可以采取的一个很好的方法,但是我们不确定我们想如何进行。

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

所以我只是向以前遇到过类似问题的人寻求一些建议。

另一个问题是,如果需要使用OpenSaml实现SP,我可以研究哪些资源?看起来我可以参考的教程或示例不多。

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

编辑1:

试着提供更多关于我想要什么的细节。我们有两种不同的产品。目前,我们能够将用户数据库外部化。例如,我们的产品可以配置为连接到LDAP服务器或任何其他外部用户数据库,只要它们正确实现了服务。

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

共有3个答案

沃驰
2023-03-14

我没有Shibboleth服务提供商的个人经验,但我目前正在开发使用Shibboleth IdP、Shibboleth Discovery Service和Guanxi Service Provider的架构。将Guanxi服务提供商的轻量级Guard模块与Java webapp集成是小菜一碟,无需编写自己的模块即可轻松获得基于Shibboleth的架构。有关于设置Guanxi SP的localhost教程,只需跳过关于Guanxi WAYF和IdP的部分,使用Shibboleth组件即可。

邓德厚
2023-03-14

如果您只想在两个产品之间实现SSO,我认为是的,从头开始构建东西更容易。如果Java,Shibboleth的OpenSaml是一个非常好的库。

当您开始实现更多的东西和一些复杂的场景时,使用已经构建的东西是最好的选择。您还应该了解可能在每个系统的基础上编写的一些内容(例如断言生成、xml dsig、验证等)。

乍一看,似乎已经构建的产品过于复杂或难以扩展或适应您的特定需求。但是,当您想要扩展所有SAML功能时,您编写连接器和实现的开发工作可以得到回报。

不过,如果你能更详细地解释一下你想要实现什么目标,这将非常有帮助;我觉得你的问题很公开。。。

唐修诚
2023-03-14

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

不过,对于大多数常规安装,实际上只需要很少的SAML规范就可以为SSO启用几个web应用程序

但是由于Shibboleth实现了整个事情,凭借其所有功能,它可能需要进行配置。

我们用Shibboleth做了一个项目(诚然,这是一个边缘用例),对我来说,当时是一个SAML新手,让一切正常运行真的是一件苦差事。

在下一步中,我通过Web概要文件查看了SSO的SAML规范。如果您阅读了它,对于这个有限的用例来说,它实际上非常简单。我们决定不再使用Shibboleth,而是使用OpenSAML库编写自己的IdP和SP。

我们能让Shibboleth工作得更快吗?可能但我认为我们不会像自己那样理解它。当然,这里还没有发明一些东西,但当你真正理解软件和词汇时,这些东西就足够令人困惑了,如果你不理解,就更不用说了。SAML充满了新词汇。

您还可以考虑将SimpleSAML用作IdP,并为您的web应用程序编写自己的SP。SimpleSAML在PHP中,但它对用户更加友好。您可以将其视为一个自包含的apache服务。

我会说我们的SP重约1000行javadoc代码,但它主要是将OpenSAML的东西和一些实用程序的东西连接在一起。事实上,这并没有那么可怕。不过,请准备好真正享受阅读签名XML blob。

令人沮丧的是,这并不是一件简单的事,但在收养等方面,这有点像是鸡毛蒜皮的事。

如果这些都不适合你,你可以看看OAuth2和它的一些配置文件。

 类似资料:
  • 我正在尝试使用OpenProject OmniAuth SAML单点登录插件设置SSO(单点登录)与OpenProject的集成。我已经配置了相关的详细信息。生成元数据并向Shibboleth支持的IDP注册。该插件在openproject登录表单上显示了一个额外的登录按钮。单击它将正确重定向到IDP的登录页面。在提供凭据之后,它正确地重定向到我提到的AssertionConsumerServic

  • 对于Spring MVC应用程序,通常如何使用SAML 2.0实现SSO? 我的应用程序需要实现SSO,以便用户无需使用我的应用程序创建新帐户即可登录。 我的理解是,如果我错了,请纠正我,我需要一个服务提供商与第三方使用的身份提供商进行通信,以便交换元数据。但我该如何实现这一过程呢? 此外,Spring MVC应用程序端需要什么? 提前感谢:D

  • 我已经搜索了很多关于如何实现SSO的好文档,因为我是这个领域的初学者。但被网上提供的文件弄糊涂了。是否有任何文档可以帮助我指导:如何创建/配置IDP、SP、如何实现SSO? 我的web应用程序使用Java 8、angular JS、JSP、Spring(带注释)、Hibernet、Maven、JBOSS。 提前感谢您的时间。

  • 问题内容: 我想在基于Spring的应用程序中实现单点登录(SSO)身份验证层,以支持来自不同安全域的身份验证和授权。我选择了Shibboleth作为IdP,但我尚未确定我将用于SP的内容。 选择是: Spring Security SAML扩展:组件使新应用程序和现有应用程序都可以充当基于SAML 2.0协议的联盟中的服务提供者,并启用Web Single Sign-On。Spring Secu

  • 新单点登录和SAML,所以我不确定我问这个问题是否正确假设作为身份提供者,用户来到我的网站并单击服务提供者链接。然后我会提示他输入用户ID和密码。假设他成功地被认证为user1@xyz.com。然后我将该用户发送到提供SAML令牌的服务提供商。假设服务提供商期望用户是user1而不是user1@xyz.com。我需要创建某种映射吗?我怎么知道服务提供商期望什么,在这种情况下是user1而不是use

  • 我正在尝试通过SAML请求将SSO集成到我们的ASP. NET应用程序中。我正在使用KentorAuthService库来实现这一点。使用kentor库是否是从其他身份提供者(例如(一次登录、快速身份等)进行身份验证的解决方案,或者我应该专门基于身份提供者实施。