在opensaml中使用saml2.0的SSO

时间:2013-06-22 10:02:33

标签: java authentication single-sign-on saml-2.0 opensaml

我们有4个申请。我们希望在这些应用程序中实施SSO。我对此有几个疑问。我们被建议使用opensaml。

查询1:

用户输入的用户名和密码由客户端(Ex.Front-end)发送到中间件,然后中间件将此信息发送到SSO服务器,然后在这种情况下 用户是主要人吗? 中间件是服务提供商吗? SSO服务器是身份提供者吗?

查询2:

现在当用户登录其中一个应用程序时,我们应该连接到Identity Provider来启动SSO,我们应该将哪些参数(强制性)发送给SSO服务器?

查询3:

当从SSO服务器获得响应后,中间件是否应保留令牌以供将来参考?

查询4:

现在,如果另一个用户点击另一个应用程序,那么应该确定有sso正在处理。怎么识别? 中间件应该为SSO服务器命中吗?

请妥善解决上述问题。

2 个答案:

答案 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堆栈。

参考:SAML stackJava equivalent to WIF