使用SAML实现SSO

时间:2015-08-20 06:45:03

标签: java single-sign-on saml shibboleth opensaml

这可能是一个广泛的问题,但如果你能提供任何提醒,我会很感激。

我需要在不同域上的两个Web应用程序(AppX,AppY)之间实现单点登录。我应该使用SAML,所以我希望有一些IdP设置,我的应用程序将成为它的服务提供商。

情景:

  1. 如果用户登录到AppX,则他/她可以在不登录的情况下转到AppY 任何地方。反之亦然。
  2. 工具I使用: Shibboleth IdP

    我需要知道的事情:

    1. IdP将在何处设置以及如何设置?
    2. P.S。 我不是网络人员所以任何知道整个SAML如何为SSO工作的链接都将是一个很大的帮助。提前谢谢。

      更新

      还有一个问题,我的应用程序知道用户是否有效,因为他们可以访问数据库,但IdP如何验证用户?我想IdP将通过反向通道连接到我的应用程序,或者我的数据库必须作为Idp的用户目录。什么是idp身份验证基于?

2 个答案:

答案 0 :(得分:2)

所以我假设网络应用程序是Java?

如果是这样,他们都需要一个SAML堆栈 - 请参考SAML connectivity tool

SAML Spring Security被广泛使用。

然后将这两个作为服务提供商连接到shibboleth。

然后用户连接到AppX,必须使用shibboleth,创建的shibboleth cookie,创建的应用程序cookie,发送给用户的SAML令牌进行身份验证。

用户连接到AppY,必须使用shibboleth进行身份验证,shibboleth看到已经存在cookie,在底层进行身份验证,创建应用程序cookie,将SAML令牌发送给用户。

如果需要外部访问,那么IDP需要可以访问互联网吗?

安装文档here

答案 1 :(得分:2)

您可以在此处找到关于SAML的视频: https://www.youtube.com/watch?v=S9BpeOmuEz4

SAML中有两个重要角色:服务提供商(SP)和身份提供商(Idp)

根据您的情况,appX和appY都是SP,shibboleth充当IdP。

Shibboleth也是一个Web应用程序,因此您只需要在一台服务器中部署shibboleth,并使其可以像appX和appY那样访问最终用户。

PS:appX和appY不需要直接访问shibboleth服务器,客户端(最终用户的浏览器)将充当连接它们的桥梁。

shibboleth Idp的安装指南是: https://wiki.shibboleth.net/confluence/display/SHIB2/IdPInstall