【问题标题】:SSO using saml2.0 in opensaml在 opensaml 中使用 saml2.0 的 SSO
【发布时间】:2013-06-22 10:02:33
【问题描述】:

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

查询 1:

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

查询 2:

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

查询 3:

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

查询 4:

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

请解决上述问题。

【问题讨论】:

  • 请尽快解决这些问题

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


【解决方案1】:

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

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

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

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

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

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

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

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

【讨论】:

  • 感谢您解决问题。我还是有些疑惑。
  • 我彻底理解了身份提供者的角色但是对于 IDP(身份提供者),我们必须要打一些 URL 之类的东西吗?另外我正在使用Java,所以我们需要发送一些具有某种特定格式的请求,以便程序员创建格式,或者在java中有任何类型的库,我们可以在其中设置参数并且请求将以特定格式自动发出??
  • 是的,您将在身份提供程序上拥有一个登录 URL。如果服务提供者没有活动会话,它将把浏览器重定向到身份提供者登录 url,返回 url 作为参数。身份验证成功后,身份提供者将与 SAML 响应一起返回。所以这一切都由浏览器重定向处理,它允许访问每个站点上的会话 cookie。
  • 关于 Java,似乎有我上面提到的 OIOSAML 的 Java 版本。我强烈建议您查看它,即使只是为了遵循示例并获得更好的理解,它是开源的,编写良好的文档。
  • 我找不到 java 示例。请帮忙,以便我可以将 SSO 集成到各种应用中。
【解决方案2】:

您打算使用哪种 IDP?

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

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

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

参考:SAML stackJava equivalent to WIF

【讨论】:

  • 在这个等效于 WIF 的 java 中,它使用的是 Apche CXF,这是不同的框架。我听说过 opensaml 库。但我无法找到这方面的例子。有什么建议吗?
  • 如果你想在这里使用 openSAML、手册等 - wiki.shibboleth.net/confluence/display/OpenSAML/Home
猜你喜欢
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 2021-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多