17.5. 其他限制
要使 SAML 正常工作,请确保您的安全供应商提供了 XMLDSig
安全供应商。要使 Kerberos 正常工作,请确保 SunJGSS
安全供应商可用。在 OpenJDK 21 中启用了 FIPS 的 RHEL 9,默认情况下,在 java.security
中可能会启用 XMLDSig
安全供应商,与最新的 OpenJDK 17 应用相同。但是,对于旧的 OpenJDK 17,它可能无法默认启用,这意味着 SAML 有效地可以正常工作。
要使 SAML 正常工作,您可以手动将供应商添加到 JAVA_HOME/conf/security/java.security
.security.security 中。例如,在 FIPS 安全供应商中没有行时添加如下行:
fips.provider.7=XMLDSig
添加此安全提供程序应该可以正常工作。实际上,它兼容 FIPS,在 OpenJDK 21 及更新版本的 OpenJDK 17 中已添加。详情包括在 bugzilla 中。
建议查看 JAVA_HOME/conf/security/java.security
,并在这里检查所有配置的供应商,并确保数字匹配。换句话说,fips.provider.7
假设已经有 6 个供应商配置了前缀,如 fips.provider.N
。
如果您不希望在 java 本身内编辑 java.security
文件,您可以创建一个自定义的 java 安全文件(例如 kc.java.security
),仅添加以上用于添加 XMLDSig 提供程序的单个属性。然后,使用附加此属性文件启动红帽构建的 Keycloak 服务器:
-Djava.security.properties=/location/to/your/file/kc.java.security
对于 Kerberos/SPNEGO,安全供应商 SunJGSS
尚未完全兼容 FIPS。因此,如果您希望符合 FIPS,则不建议将其添加到安全供应商列表中。当在 FIPS 平台以及安全供应商不可用时,红帽构建的 Keycloak 中默认禁用 KERBEROS
功能。详情包括在 bugzilla 中。
算法 EdDSA
无法用于 FIPS 模式。虽然当前的 BCFIPS
供应商支持 Ed25519
和 Ed448
curves,但生成的密钥不实施标准的 JDK 接口来管理它们(EdECKey
、EdECPublicKey、EdECPublicKey
、EdECPrivateKey
、…)和红帽构建的 Keycloak 不能将它们用于签名。