这可能是一个广泛的问题,但如果你能提供任何提醒,我会很感激。
我需要在不同域上的两个Web应用程序(AppX,AppY)之间实现单点登录。我应该使用SAML,所以我希望有一些IdP设置,我的应用程序将成为它的服务提供商。
情景:
工具I使用: Shibboleth IdP
我需要知道的事情:
P.S。 我不是网络人员所以任何知道整个SAML如何为SSO工作的链接都将是一个很大的帮助。提前谢谢。
更新
还有一个问题,我的应用程序知道用户是否有效,因为他们可以访问数据库,但IdP如何验证用户?我想IdP将通过反向通道连接到我的应用程序,或者我的数据库必须作为Idp的用户目录。什么是idp身份验证基于?
答案 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