【问题标题】:SAML2 SSO Assertion ConsumerSAML2 SSO 断言消费者
【发布时间】:2013-02-03 06:09:45
【问题描述】:

我有一位客户想要使用基于 SAML2 断言的方法来实施 SSO。客户将成为身份提供者 (IDP),而我的应用程序实际上将成为服务提供者 (SP)。

过去,我实施了 SSO 解决方案,其中 IDP 是 Oracle Access Manager,因此我们获得了 idp.xml 文件,该文件允许我们使用提供的 Fedlet 配置我们的 SP 环境。这方便地创建了一个相关的 WAR 文件,部署后,我可以将 sp.xml 文件分发给将其导入 IDP 的客户。这一切都很好,我理解这些概念,即我们收到初始请求,fedlet 处理这个并将用户带到他们进行身份验证的 IDP,然后通过 Fedlet 允许我们的 SAML 响应将它们传递回我们的 SP解析和提取一些识别用户的数据。然后,我会按照要求将它们登录到我们的应用程序中。

然而,目前的要求是不使用任何后端框架来提供 IDP,他们表示它是自定义构建的。他们给了我 IDP URL 和证书文件,并要求我们提供“AssertionConsumerServiceURL”和“AudienceURI”。

我启用 SSO 的应用程序主要基于 Java。到目前为止,我的调查使我找到了 Forgerock 的 OpenAM 解决方案以及 Shibboleth 的 OpenSAML。但是,我在第一步中遇到了困难,基本上我从哪里开始构建自定义 SP 应用程序,使用 OpenAM/Shibboleth/AnotherFramework 连接到第三方 IDP。

任何指针都会非常有用。

谢谢, 李

【问题讨论】:

    标签: java single-sign-on saml-2.0 openam shibboleth


    【解决方案1】:

    取决于您的要求。 OpenAM feldlet 或 Shibboleth 我可能是最好的方法,因为你不必自己做这么多的编码。

    OpenSAML 是一个非常底层的工具包,用于处理 SAML 消息。如果不是真的需要,我不会推荐它。

    至于他们要求的东西,AssertionConsumerServiceURL 是您接收 SSO SAML 消息的服务端点。

    AudienceURI 的定义非常模糊。基本上,您向他们发送一个标识符,他们将其包含在他们的消息中,并且您验证该标识符与您给他们的标识符相同。我自己不明白这和目的地之间的区别......

    我有点惊讶他们问你这个。进行首次信息交换的标准方法是通过 SAML 元数据文档。

    【讨论】:

    • 嗨 Stefan,是的,我也很惊讶他们要求这样做。在我看来,他们推出了自己的 IDP 解决方案,而不是使用现成的解决方案(例如 OpenAM 等),而且他们的解决方案没有 IDP 元数据。因此,我从他们发送的证书中提取了 X509 证书,并尝试代表他们构建 IDP 元数据。然后我将它导入到 OpenAM fedlet 并部署到 Tomcat。他们正在尝试运行 IDP 发起的 SSO,但我收到“Issuer in Response is Invalid”,我现在正在尝试排除故障。
    • IPD 启动 SSO?不是SP发起的? Issuer 的问题在于,SAML 响应中的 issuer 必须与您 IDP 的 entityID 相同。
    • 谢谢。我已将 IDP 元数据中的 entityID 更新为他们建议 Issuer 将要成为的内容,但他们已经更改了它(没有让我知道!)。所以我更新了配置以再次匹配,现在我得到“这个服务提供商不是目标受众”。 SAMLResponse 包含 saml:Audience 元素,大概这需要匹配我配置中某处的某些内容,只需遍历所有内容即可找到内容。
    • 刚刚发现这篇文章 (fusionsecurity.blogspot.co.uk/2011/08/…) 建议 元素应该与我的 SP 的“entityID”匹配。所以我会让他们更新并试一试。
    • 是的,我不认为它必须是实体 ID,但它是一种正常的方式。如果您还有其他问题,我认为最好开始一个新问题。你认为这个问题得到了回答吗?
    【解决方案2】:

    您可能知道 OpenAM 还提供了 FedLet,它是一个轻量级的 SAML2.0 SP 实现。如果你想自己做这一切,你必须自己构建一个 SAML2.0 SP。

    如果你想弄乱 Spring 你也可以使用 Spring Security SAML2 扩展 ..'http://static.springsource.org/spring-security/site/extensions/saml/index.html'

    【讨论】:

    • 嗨,是的,我已经走上了 OpenAM fedlet 路线,但不得不根据他们的证书手动创建 IDP 元数据,这很痛苦(请参阅上面对 Stefan 回答的评论)。现在正在尝试解决后果!作为对您关于 Spring 的另一点的回应,不幸的是,这不在 Spring 项目中。
    【解决方案3】:

    为什么要推出那些繁重的 SAML 解决方案?您是否从 Ping Identity 了解过 PingOne APS(应用程序提供者服务)或 PingFederate?您可以在不到一天的时间内实施 APS,并且您的第一个客户配置是免费的。包括仪表板报告、用于配置的 IDP 自助服务功能以及用于您的应用程序的非常简单的 REST API 集成。 [注:我为 Ping 工作。]

    【讨论】:

    • 谢谢伊恩。我从未使用过你们的产品,那么使用 PingFederate 比使用 OpenAM fedlet 能给我带来什么好处?
    【解决方案4】:

    您可以设置 Spring Security SAML 扩展。该扩展程序会创建一个 AssertionConsumerServiceURL,如果他们想在您访问他们的元数据时访问您的元数据,他们只需要访问 www.yourwebsite.com/saml/metadata,他们就会下载您的 SP 元数据。

    【讨论】:

      猜你喜欢
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 2020-04-02
      相关资源
      最近更新 更多