我们有4个应用程序。我们希望在这些应用程序中实施SSO。我对此有一些怀疑。建议我们使用opensaml。
查询1:
用户输入的用户名和密码由客户端(例如,前端)发送到中间件,然后中间件将此信息发送到SSO服务器,然后在这种情况下
用户是校长吗?
中间件是服务提供商吗?
SSO服务器是身份提供者吗?
查询2:
现在,当用户登录其中一个应用程序时,我们应该连接到身份提供商以启动SSO,我们应该将哪些参数(必选)发送给SSO服务器?
查询3:
从SSO服务器获得响应后,中间件是否应保留令牌以备将来参考?
查询4:
现在,如果另一个用户点击了另一个应用程序,则应该确定正在处理sso。如何识别?
中间件是否应该为此而攻击SSO服务器?
请解决以上查询。
最佳答案
1)是,您描述的“中间件”是服务提供商,“ SSO服务器”是身份提供商。
2)当用户尝试在服务提供商上使用受保护的资源时,它将浏览器重定向到身份提供商。如果浏览器与身份提供者之间没有活动会话,则将提示用户输入登录详细信息。
随后,浏览器将与SAML响应一起重定向到服务提供者,以对用户进行身份验证。验证SAML响应后,服务提供商将重定向到受保护的资源。
用户通过身份验证后,服务提供者可以保留其自己的会话,以保存重定向到身份提供者的每个请求。
3)服务提供商(中间件)通常不会保留来自身份提供商的SAML响应,而是可以设置自己的会话。例如,在.Net中,这可以通过表单身份验证关闭。
4)当用户尝试访问另一个服务提供商时,浏览器将被重定向到身份提供商。由于用户已经具有活动会话,因此身份提供程序将使用SAML响应将其重定向回服务提供程序。然后,服务提供者将重定向到受保护的资源,并可以选择创建它自己的会话。
这对用户是无缝发生的,并且有效地将他们直接直接登录到第二个服务提供者。
您还使用哪个平台进行开发?如果您使用的是.NET或Java,那么我可以推荐开源库OIOSAML。它包括服务提供商和身份提供商的工作示例,因此您可以了解工作原理。
关于java - 在OpenSAML中使用saml2.0的SSO,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17249462/