如何使用证书获取密钥斗篷作为 SP 的 SAML 元数据



我已经设置了一个keycloak服务器。然后我创建了一个领域,在该领域内创建了一个SAML-IDP。所以我的密钥斗篷服务器是一个使用该 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 SP 元数据不包含 X509 证书。

如何获取元数据?

答:

如果 (I( Keycloak SAML SP 不需要签署 SAML身份验证请求或 (II( 不需要 SAML IdP 来加密 Keycloak SAML SP 的 SAML 断言,则可以使用 Keycloak 的 SAML SP 元数据不包含 X509 证书。

(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服务器,然后通过Shibboleth SAML IdP提供的SAML身份验证成功登录Google G Suite。

为了参考没有 X509 证书的 SAML SP 元数据,我已经进行了第 14 次提交,将 Google G Suite SAML SP 元数据和相应的 SAML 配置上传到如何使用 Docker 容器在 GitHub 存储库中构建和运行 Shibboleth SAML IdP 和 SP。

(II( 组件空间开发提供了有关如何在没有证书的情况下生成 SAML 服务提供程序元数据的指导。

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

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 元数据应至少包含一个用于签署 SAML 响应/断言的 X509 证书。

加尔多提供的后续答案

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

(i( 将 IDP 配置中的"想要加密断言"设置为 ON,X509证书条目会立即出现在"导出"选项卡中。

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

根据winstonhongs的回答,keycloak服务器在此配置中不需要证书。 我将 IDP 配置中的"想要加密断言"设置为 ON,X509证书条目立即出现在"导出"选项卡中。

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

对服务提供程序元数据进行签名 - 如果为 true,它将使用领域的密钥对 SAML 服务提供程序元数据描述符进行签名。

最新更新