7.2. 服务供应商密钥和关键元素


如果 IdP 要求客户端应用程序(或 SP)为其所有请求签名,如果 IdP 将加密断言,则必须定义用于执行此操作的密钥。对于客户端签名的文档,您必须同时定义用于签署文档的私钥和公钥或证书。对于加密,您只需要定义用于解密它的私钥。

可以通过两种方式描述您的密钥。它们可以存储在 Java KeyStore 中,或者您可以直接以 PEM 格式在 keycloak-saml.xml 中复制/粘贴密钥。

        <Keys>
            <Key signing="true" >
               ...
            </Key>
        </Keys>
Copy to Clipboard

Key 元素有两个可选属性 signingencryption。当设置为 true 时,告诉适配器使用哪个密钥。如果这两个属性都设为 true,则密钥将用于签名文档和解密加密的断言。您必须至少将其中一个属性设置为 true。

7.2.1. keystore 元素

Key 元素中,您可以从 Java Keystore 加载密钥和证书。这在 KeyStore 元素中声明。

        <Keys>
            <Key signing="true" >
                <KeyStore resource="/WEB-INF/keystore.jks" password="store123">
                    <PrivateKey alias="myPrivate" password="test123"/>
                    <Certificate alias="myCertAlias"/>
                </KeyStore>
            </Key>
        </Keys>
Copy to Clipboard

以下是使用 KeyStore 元素定义的 XML 配置属性。

file
密钥存储的文件路径。此选项是 OPTIONAL。必须设置 file 或 resource 属性。
resource
KeyStore 的 WAR 资源路径。这是对 ServletContext.getResourceAsStream ()方法调用中的一个路径。此选项是 OPTIONAL。必须设置 file 或 resource 属性。
password
KeyStore 的密码。此选项是 REQUIRED

如果您要定义 SP 将用来签署文档的密钥,还必须在 Java KeyStore 中指定对私钥和证书的引用。上例中的 PrivateKeyCertificate 元素定义了一个 alias,指向密钥存储内密钥或证书。密钥存储需要额外的密码来访问私钥。在 PrivateKey 元素中,您必须在 password 属性中定义此密码。

7.2.2. 密钥 PEMS

Key 元素中,您直接使用子元素 PrivateKeyPemPublicKeyPemCertificatePem,直接声明您的密钥和证书。这些元素中包含的值必须符合 PEM 密钥格式。如果您使用 openssl 或类似命令行工具生成密钥,通常使用这个选项。

<Keys>
   <Key signing="true">
      <PrivateKeyPem>
         2341251234AB31234==231BB998311222423522334
      </PrivateKeyPem>
      <CertificatePem>
         211111341251234AB31234==231BB998311222423522334
      </CertificatePem>
   </Key>
</Keys>
Copy to Clipboard
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat