【问题标题】:how to get saml-metadata for keycloak as sp with certificate如何使用证书获取 keycloak 的 saml 元数据作为 sp
【发布时间】:2023-03-19 13:15:02
【问题描述】:

我已经设置了一个 keycloak 服务器。然后我创建了一个领域,并在该领域中创建了一个 SAML-IDP。所以我的 keycloak 服务器是一个使用该 IDP 进行身份验证的 SAML-SP。 IDP 需要 SAML 元数据。我可以在 IDP 条目的“导出”选项卡中的 keycloak 管理控制台中将其导出。我也可以在这里下载:

http[s]://{host:port}/auth/realms/{realm-name}/broker/{broker-alias}/endpoint/descriptor

但元数据不包含 X509 证书:

<EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://keycloak.sample/auth/realms/nodejs-example">
    <SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false"
            protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol urn:oasis:names:tc:SAML:1.1:protocol http://schemas.xmlsoap.org/ws/2003/07/secext">
        <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://keycloak.sample/auth/realms/nodejs-example/broker/idp.devel/endpoint"/>
        <NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
        </NameIDFormat>
        <AssertionConsumerService
                Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://keycloak.sample/auth/realms/nodejs-example/broker/idp.devel/endpoint"
                index="1" isDefault="true" />
    </SPSSODescriptor>
</EntityDescriptor>

如何在元数据中加入一个?

【问题讨论】:

    标签: saml keycloak


    【解决方案1】:

    问题: SAML SP 元数据不包含 X509 证书。

    如何在元数据中加入一个?

    回答

    如果(I)Keycloak SAML SP 确实需要签署 SAML 身份验证请求或(II ) SAML IdP 需要为 Keycloak SAML SP 加密 SAML 断言。

    (1) SAML SP 元数据必须包含 X509 证书。也就是说,X509 证书对于 SAML SP 元数据不是强制性的。

    例如,Google G Suite 和 ComponentSpace 都提供没有 X509 证书的 SAML SP 元数据。

    (I) Google G Suite 的 SAML SP 元数据包含 X509 证书。我将 Google G Suite 的 SAML SP 元数据上传到Shibboleth SAML IdP server,然后通过 Shibboleth SAML IdP 提供的 SAML 身份验证成功登录 Google G Suite。

    为了您在没有 X509 证书的 SAML SP 元数据方面的参考,我已通过the 14th commit 将 Google G Suite SAML SP 元数据和相应的 SAML 配置上传到 GitHub 存储库的How to build and run Shibboleth SAML IdP and SP using Docker container

    (二)ComponentSpace开发提供the guidance on how to generates SAML service provider metadata with no certificates

    未指定签名或加密证书,因此生成的元数据中不包含任何证书。

    ExportMetadata.exe
    SAML configuration file to export [saml.config]:
    X.509 signature certificate file [None]:
    X.509 encryption certificate file [None]:
    Assertion Consumer Service URL [None]: http://localhost:51901/SAML/AssertionConsumerService.aspx
    Single Logout Service URL [None]:
    Partner Identity Provider Name [None]:
    SAML metadata file [metadata.xml]:
    

    (2) 如果 SAML SP 需要签署 SAML 身份验证请求或 SAML IdP 需要加密 SAML 断言,则 SAML SP 元数据需要包含 X509 证书。

    (3) 与 SAML SP 完全不同的是,SAML IdP 元数据应包含至少一个 X509 证书,用于签署 SAML 响应/断言。

    Galdor 提供的后续回答

    如果您需要 SAML IdP 为 Keycloak SAML SP 加密 SAML 断言

    (I) 将 IDP-Configuration 中的 “Want Assertions Encrypted” 设置为 ON,然后 X509Certificate 条目立即出现在 Export 选项卡中。

    (II) 下载 Keycloak 的 SAML SP 元数据,其中应包含用于加密的 X509 证书。

    【讨论】:

      【解决方案2】:

      根据 winstonhongs 的回答,keycloak 服务器在此配置中不需要证书。 我将 IDP-Configuration 中的“Want Assertions Encrypted”设置为 ON,然后 X509Certificate 条目立即出现在 Export 选项卡中。

      【讨论】:

      • 非常感谢您的更新。我已将您的后续回答(即 Galdor 提供的后续回答)添加到我的回答中。
      【解决方案3】:

      您现在可以在 KC 13.0.1 中使用您的领域密钥对唱出您的元数据。 在此处查看更多信息:https://www.keycloak.org/docs/latest/server_admin/#saml-v2-0-identity-providers

      签署服务提供者元数据 - 如果为真,它将使用领域的密钥对签署 SAML 服务提供者元数据描述符。

      【讨论】:

        猜你喜欢
        • 2018-04-19
        • 2020-02-10
        • 2014-11-04
        • 2013-11-30
        • 2015-09-20
        • 2021-11-04
        • 2016-10-04
        • 2020-10-23
        • 2016-08-25
        相关资源
        最近更新 更多