Keycloak:缺少领域公钥

Tom*_*rik 9 keycloak

当我访问keycloak管理控制台(!远程)并创建客户端时:

keycloak客户端设置

keycloak OIDC JSON没有公钥

keycloak OIDC JSON

我希望在JSON中有类似的东西:

 "realm-public-key": "MIIBIjANBg....
Run Code Online (Sandbox Code Playgroud)

Uch*_*chi 17

最新的keycloak中的keycloak.json没有任何域公钥...实际上你似乎使用的是keycloak版本2.3.x,它有一些变化.基本上,您可以为领域旋转多个公钥.该文件说: -

在2.3.0版本中,我们添加了对公钥轮换的支持.当管理员在Keycloak管理控制台中旋转领域键时,客户端适配器将能够识别它并自动从Keycloak下载新的公钥.但是,如果您的适配器中没有带有硬编码公钥的realm-public-key选项,则会自动下载新密钥.因此,我们不建议在适配器配置中使用realm-public-key选项.请注意,此选项仍然受支持,但如果您确实希望在适配器配置中使用硬编码的公钥并且永远不从Keycloak下载公钥,则它可能很有用.从理论上讲,如果你在适配器和Keycloak之间有不受信任的网络,这样做的一个原因可能是避免中间人攻击,但在这种情况下,使用HTTPS是更好的选择,这将保护所有请求之间的所有请求.适配器和Keycloak.

  • 对于那些寻找一年前我的问题答案的人来说只是一个注释:你可以在`<realm-url>/protocol/openid-connect/certs`上获得与GET一起使用的证书. (4认同)

Tom*_*rik 9

我仍然不知道为什么keycloak OIDC JSON中没有公钥(可能来自安全原因),但我发现它在:

领域设置>键>公钥视图

在此输入图像描述

  • *我仍然不知道为什么keycloak OIDC JSON中没有公钥*这是因为键旋转.如果适配器只是*直接从服务器下载密钥,它将更灵活,而不是在JSON中对密钥进行硬编码.这样你可以旋转这些键; 每月或每天用新的替换它们. (5认同)