【问题标题】:SAML SSO: Can one SP metadata file be used for 5 separate SPs running the same applicationSAML SSO:一个 SP 元数据文件能否用于 5 个运行同一应用程序的独立 SP
【发布时间】:2014-11-18 16:20:09
【问题描述】:

我的应用程序现在使用 Spring Security SAML 扩展作为 SAML 2.0 的服务提供者运行。我与身份提供者(ssocircle)交换了 IDP/SP 元数据文件,SSO 工作正常。

但是,我的应用程序应该部署在 N 台机器上,并且业务要求部署/机器对的数量是动态的(从 1 到 20)。

我是否必须为每个部署/机器拥有一个 SP 元数据文件并在 IDP 中注册每个 SP 元数据文件以将其添加到他的信任圈中,或者有没有办法拥有一个可以包含信息的 SP 文件关于所有服务器,因为它是同一个部署单元但不是同一个实例。

也就是说,如果我有 5 台机器(MyApp1、MyApp2、MyApp3、MyApp4、MyApp5)安装同一个应用程序,SP 元数据文件可以创建一次而不是 5 次。 这样,我会向 IDP 注册 1 个 SP 元数据文件,而不是拥有 5 个 SP 元数据文件(唯一的区别是机器的 URL):

另外,当用户在 MyApp1 上进行身份验证时,是否有办法在其他服务器(MyApp2、MyApp3、MyApp4、MyApp5)上进行身份验证?

【问题讨论】:

  • 同一个集群应用程序是否在单个公共 URL 后可用?
  • 不,它是5台不同的机器,每台机器都有一个应用服务器,应用程序(SP)部署在上面。我们可以说应用 EAR 部署在 5 台不同的机器上。所以我们有 5 个不同的 URL,每个 URL 都访问其机器上的应用程序。

标签: spring-security single-sign-on saml-2.0 spring-saml


【解决方案1】:

只要应用程序位于不同的 URL,您就应该为每个应用程序使用单独的元数据。

您可以使用一个技巧并使用 SAMLContextProviderLP 为每个应用程序配置一个虚构的方案、主机和端口(即假设所有 5 个应用程序都使用相同的公共 URL)。但这意味着来自 IDP 的相同断言可用于登录这 5 个应用程序中的任何一个。如果您想走这条路,请查看 Spring SAML 手册关于反向代理和负载平衡的章节。

【讨论】:

  • 非常感谢弗拉基米尔。我在示例应用程序上使用了 SAMLContextProviderLB,它运行良好。我会将它应用到我的项目中。
  • 我有一个问题@Vladimir。当我尝试该解决方案并拥有 2 台具有相同 SP 元数据文件的服务器时。服务器 A 工作正常。服务器 B 在执行 SSO 时,IDP(SSOCircle) 将我重定向到带有断言帖子的服务器 A。我的问题是 IDP 如何选择服务器来回发断言。是 SAML 请求中的 AssertionConsumerServiceURL 还是标签“AssertionConsumerService”和项目“Location”中的 SP 元数据文件。还有 AssertionConsumerServiceIndex 的用途是什么,对我的情况有帮助吗?
猜你喜欢
  • 1970-01-01
  • 2016-08-14
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
  • 2017-02-25
相关资源
最近更新 更多