试图在两个KeyCloaks之间联合用户(来自令牌的错误受众)时出乎意料的错误



我有两个键曲,一个是6.x(parent iDP(,另一个是3.x(子IDP(,当试图将用户从父母身上接合用户遇到一个孩子,意外的错误。子IDP的堆栈轨迹,

Failed to make identity provider oauth callback: org.keycloak.broker.provider.IdentityBrokerException: Could not fetch attributes from userinfo endpoint.
    at org.keycloak.broker.oidc.OIDCIdentityProvider.getFederatedIdentity(OIDCIdentityProvider.java:366)
Caused by: org.keycloak.broker.provider.IdentityBrokerException: Wrong audience from token.

,但是根据文档,我同时配置了IDP,如果我尝试从父母到子女,它无缝地工作,是否有人知道此问题的根本原因?

发生这种情况,因为从版本4.6.0决定不将受众属性添加到令牌中。这就是为什么较旧的KeyCloak抱怨令牌中错误的受众的原因。

解决此问题,转到父级IDP的客户端范围步骤1创建客户端范围" aud_scope"第2步在此范围的设置中,创建协议映射器

  • 名称:观众 - 录音
  • 选择映射类型:受众
  • 包括客户受众:联合客户的名称
  • 添加到访问令牌:on

然后转到联合客户端和客户范围设置选项卡,

将可用的客户端示波器" aud_scope"添加到分配的默认客户端范围

最新更新