1

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

查询一:

用户输入的用户名和密码由客户端(Ex.Front-end)发送给中间件,然后中间件将这些信息发送给SSO服务器,那么这种情况下用户是不是principal??中间件是服务提供者吗?SSO 服务器是身份提供者吗?

查询 2:

现在,当用户登录其中一个应用程序时,我们应该连接到身份提供者以启动 SSO,我们应该将哪些参数(强制)发送到 SSO 服务器?

查询 3:

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

问题 4:

现在,如果另一个用户点击另一个应用程序,那么应该确定有 sso 正在运行。如何识别?中间件是否应该为此访问 SSO 服务器?

请解决上述问题。

4

2 回答 2

2

1)是的,您描述的“中间件”是服务提供者,“SSO 服务器”是身份提供者。

2)当用户在Service Provider上尝试一个受保护的资源时,它会将浏览器重定向到Identity Provider。如果浏览器没有与身份提供者的活动会话,则会提示用户输入登录详细信息。

随后,浏览器将与验证用户身份的 SAML 响应一起重定向回服务提供者。验证 SAML 响应后,服务提供者将重定向到受保护的资源。

用户通过身份验证后,服务提供者可以保留自己的会话,以便为每个请求保存到身份提供者的重定向。

3) 服务提供者(中间件)通常不会保留来自身份提供者的 SAML 响应,而是可以建立自己的会话。例如,在 .Net 中,这可以通过 Forms Authentication 关闭。

4)当用户试图访问另一个Service Provider时,浏览器会被重定向到Identity Provider。由于用户已经有一个活动会话,身份提供者将使用 SAML 响应重定向回服务提供者。然后服务提供者将重定向到受保护的资源,并可选择创建它自己的会话。

这对用户来说是无缝的,他们有效地直接登录到第二个服务提供商。

您还使用哪个平台进行开发?如果您使用的是 .NET 或 Java,那么我可以推荐开源库OIOSAML。它包括服务和身份提供者的工作示例,因此您可以了解事情是如何工作的。

于 2013-06-24T10:33:09.333 回答
1

您打算使用哪种 IDP?

在 SAML 世界中,所有 URL、证书等都是通过元数据交换的。

因此,在 IDP 中您将导入 sp.xml,在 SP 中您将导入 idp.xml。

对于 Java,您的 SP 端需要某种 SAML 堆栈。

参考:SAML 堆栈Java 等效于 WIF

于 2013-06-24T19:11:16.857 回答