【问题标题】:SAML metadata file and SSOSAML 元数据文件和 SSO
【发布时间】:2020-10-13 06:22:04
【问题描述】:

瞄准

使用 SSO 导航到 url。

信息

第三方向我提供了一个 SP SAML 元数据文件。

问题

使用 Java 和 JavaScript,我如何导航到端点 url?

我看过很多关于 SAML 架构的文章,但似乎找不到如何导航到端点。我认为这甚至可以像 JWT 一样在 Postman 中进行测试。

更多信息

我是 SAML 的新手,但一直在阅读该主题。据我所知,我是“委托人”,第三方是“服务提供商”。看起来他们使用onelogin 来生成 SP 元数据文件。

例如

<?xml version="1.0"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" validUntil="2020-10-14T14:43:29Z" cacheDuration="PT604800S" entityID="https://testentityid">
  <md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
    <md:KeyDescriptor use="signing">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>certificate</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </md:KeyDescriptor>
    <md:KeyDescriptor use="encryption">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>certificate</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </md:KeyDescriptor>
    <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://logoutendpoint"/>
    <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
    <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://consumeendpoint" index="1"/>
  </md:SPSSODescriptor>
</md:EntityDescriptor>

【问题讨论】:

    标签: java saml


    【解决方案1】:

    委托人是 IdP 正在验证的用户。一个简单的流程本质上是使用SAML Web Browser SSO Profile:

    1. 用户转到服务提供商 (SP) 的资源
    2. SP 检测到用户没有会话并将浏览器重定向到 IdP 的 SSO 端点
    3. IdP 对用户(主体)进行身份验证
    4. IdP 将浏览器重定向到 SP 的 AssertionConsumerService URL 以及在 URL 中编码的 SAML 响应,其中包含主体的 SAML 属性。

    有各种 SAML 请求/响应示例 here 以及 SP 重定向浏览器的各种方式,通过 GETPOST SAML 绑定。加上许多其他必需品,例如基于每个实体(IdP 和 SP)元数据中的密钥的证书和签名。

    通常,您必须使用您的私钥签署 SAML 请求,而其他实体(例如 IdP)使用来自您的 SAML 元数据 &lt;md:KeyDescriptor use="signing"&gt;/X509Data/X509Certificate 的公钥验证该签名。发送给 SP 的主动 SAML 响应可能不相关,但需要使用 IdP 的私钥进行签名,并且 SP 需要拥有 IdP 的公钥来验证签名。

    【讨论】:

    • 嗨@codebrane,感谢您在上面的解释。这确实使 SAML 的工作更加清晰。问题:您知道我在哪里可以找到示例/教程,作为使用网站的“校长”,如何重定向到 SP?我可以从上面的链接中看到,有请求/响应对象的示例,但我不知道如何实际实现它。我要调用端点吗?我似乎也找不到这样的例子。
    • 配置文件是基于浏览器的,因此您无需调用任何内容。您只需使用参数 ?SAMLResponse=... 将浏览器重定向到 SP 的 AssertionConsumerService,但您需要构建一个 SAML 响应,对其进行签名,也许对其进行加密并进行 base64 编码。出于这些原因,不建议实施您自己的 IdP
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多