配置 Keycloak 以使用 AES-128-GCM 而不是 AES-128-CBC 加密 SAML 断言

问题描述 投票:0回答:1

我正在开发一个通过 SAML 实现单点登录 (SSO) 的项目。我在本地使用 Keycloak 26.0.6 来模拟 SSO。作为设置的一部分,我尝试配置 Keycloak 以使用 AES-128-GCM 而不是默认的 AES-128-CBC 加密 SAML 断言。

下面是通过 SAML-Tracer 获取的当前 SAML 响应的片段:

<saml2:EncryptedAssertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
  <xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
                    Id="_36c8dd9b03ad45e7acc1f938f69c148d"
                    Type="http://www.w3.org/2001/04/xmlenc#Element">
    <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"
                           xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"/>
   ....
</xenc:EncryptedData>

我需要使用 AES-128-GCM 而不是默认的 AES-128-CBC 来加密 SAML 断言,以验证服务提供商(我的应用程序)是否可以成功解密 SAML 断言。但是,我找不到任何方法来配置 Keycloak 来实现这一点。我用的是大师境界。在领域设置中,我尝试使用“添加提供程序”按钮添加新的 AES 密钥,希望选择 AES-128-GCM 算法,但没有成功。

enter image description here

有什么想法吗?

encryption keycloak saml aes-gcm
1个回答
0
投票

Keycloak 目前(截至 2024 年 12 月)不支持 AES-128-GCM 进行 SAML 加密,根据 Keycloak#14464

...我们的 SAML 加密始终使用“http://www.w3.org/2001/04/xmlenc#aes128-cbc”作为加密 SAML 断言等的加密。我们甚至没有任何方法来覆盖它在配置中。我们不需要将自己限制在原始的 XML 加密规范中。 Keycloak 使用 Apache Santuario,自 Santuario 1.5.0(我们使用的是 2.2.3)以来,它还通过 BouncyCastle 支持 GCM(和其他)算法。我们目前不使用这些,但从技术上来说它应该相对简单......

鉴于进一步的相关讨论似乎已经结束,Keycloak 似乎无意立即支持 GCM 而不是 CBC

如果您正在寻找一种使用支持 GCM 的身份提供商来测试 SP 的快速方法,我会寻找类似 SimpleSAMLphp 的工具,它非常易于部署并支持 GCM。

© www.soinside.com 2019 - 2024. All rights reserved.