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