我们有4个申请。我们希望在这些应用程序中实施SSO。我对此有几个疑问。我们被建议使用opensaml。
查询1:
用户输入的用户名和密码由客户端(Ex.Front-end)发送到中间件,然后中间件将此信息发送到SSO服务器,然后在这种情况下 用户是主要人吗? 中间件是服务提供商吗? SSO服务器是身份提供者吗?
查询2:
现在当用户登录其中一个应用程序时,我们应该连接到Identity Provider来启动SSO,我们应该将哪些参数(强制性)发送给SSO服务器?
查询3:
当从SSO服务器获得响应后,中间件是否应保留令牌以供将来参考?
查询4:
现在,如果另一个用户点击另一个应用程序,那么应该确定有sso正在处理。怎么识别? 中间件应该为SSO服务器命中吗?
请妥善解决上述问题。
答案 0 :(得分:2)
1)是的,您描述的“中间件”是服务提供商,“SSO服务器”是身份提供商。
2)当用户在服务提供商上尝试受保护资源时,它会将浏览器重定向到身份提供商。如果浏览器与Identity Provider没有活动会话,则会提示用户输入登录详细信息。
在此之后,浏览器将被重定向回服务提供商以及对用户进行身份验证的SAML响应。验证SAML响应后,服务提供商将重定向到受保护资源。
一旦用户通过身份验证,服务提供商就可以保留自己的会话,以便为每个请求保存重定向到身份提供商。
3)服务提供商(中间件)通常不会保留来自身份提供商的SAML响应,而是可以设置自己的会话。例如,在.Net中,这可以通过表单身份验证来解决。
4)当用户尝试访问另一个服务提供商时,浏览器将被重定向到身份提供商。由于用户已经有活动会话,身份提供商将使用SAML repsonse重定向回服务提供商。然后,服务提供商将重定向到受保护资源,并可选择创建自己的会话。
这对用户无缝地发生,并且它们被有效地直接记录到第二个服务提供商。
您还使用哪个平台进行开发?如果您使用的是.NET或Java,那么我可以推荐开源库OIOSAML。它包括服务和身份提供商的工作示例,以便您了解事情的运作方式。
答案 1 :(得分:1)
您在考虑使用什么IDP?
在SAML世界中,所有URL,证书等都通过元数据进行交换。
因此,在IDP中,您将导入sp.xml,在SP中,您将导入idp.xml。
对于Java,您需要在SP端使用某种SAML堆栈。