【问题标题】:Spring SAML Application using two IDPs and different URLs使用两个 IDP 和不同 URL 的 Spring SAML 应用程序
【发布时间】:2018-04-24 23:02:09
【问题描述】:

我似乎不知道如何使用两个不同的 IDPS 和 2 个不同的应用程序 URL。我在 weblogic 上进行了这项工作,但没有使用 spring saml 安全性的 spring boot 应用程序。

一个重要的部分是我们有两个不同的 URL。

  1. 外部用户的代理 URL。他们必须使用此 URL,因为他们不在网络中。 一种。这些用户点击了 IDP-A
  2. 内部用户的内部 URL。 湾。这些用户点击了 IDP-B

我们发送给每个 IDP 的元数据使用相同的实体 ID,但端点 URL 不同。

我们所做的一件事是打开发现功能,并在哪里能够命中每个 IDP,但它总是将我们重定向到内部 URL。我注意到 AssertionConsumerServiceUrl 始终设置为内部 URL,这解释了为什么返回它是相同的。在我们的 weblogic 实现中,我们不发送 AssertionConsumerServiceUrl。

我们可以排除 AssertionConsumerServiceUrl 吗?

你知道我尝试做的配置是否可行吗?

【问题讨论】:

    标签: spring-security spring-saml


    【解决方案1】:

    您可以在服务中自动装配 MetadataManager bean,然后调用 addMetadataProvider 来启动元数据。

    您可以从 IDP 获取的 Metadata 中获取 entityId,并可以附加到 url : 'http:///saml/login?idp=' 通过点击此 url,它会将您重定向到适当的 IDP 登录。

    【讨论】:

    • 当我尝试将 AssertionConsumerServiceUrl 设置为 URL A 时。我需要它不发送 AssertionConsumerServiceUrl,因为如果确实如此,IDP 会将我重定向到该 URL,即使它来自不同的 URL。你知道如何不发送 AssertionConsumerServiceUrl 吗?
    • 在spring saml的引用中找到默认配置,那么只会生成一个SP元数据。因此,如果您有两个 URL abc.com 和 xyz.com,那么对您的服务器的第一个请求(来自两个 URL 中的任何一个)将设置 AssertionConsumerServiceURL。例如,如果对服务器的第一个请求来自 abc.com,则 ACS URL 将设置为 abc.com。之后,即使您通过 xyz.com 发送 SAML 请求,您的 SP 元数据也会在 URL 中包含 abc.com。所以解决这个问题的方法是,你需要初始化尽可能多的本地 SP 元数据来访问你的应用程序。
    猜你喜欢
    • 2017-10-08
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多