Keycloak 尝试在两个密钥斗篷之间联合用户时出现意外错误(来自令牌的访问者错误)

Keycloak 尝试在两个密钥斗篷之间联合用户时出现意外错误(来自令牌的访问者错误),keycloak,Keycloak,我有两个密钥斗篷,一个是6.x(父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.bro

我有两个密钥斗篷,一个是6.x(父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开始,决定不向令牌添加访问群体属性。这就是为什么旧的KeyClope在令牌中抱怨错误的受众的原因

要解决此问题,请转到父IDP的客户端范围 第一步 创建客户端范围“aud_scope” 步骤2 在此作用域的设置中创建协议映射器

  • 名称:观众映射器
  • 选择映射器类型:访问者
  • 包含的客户端访问群体:联合客户端的名称
  • 添加到访问令牌:打开
然后转到联合客户端,在客户端范围设置选项卡中

将可用的客户端作用域“aud_scope”添加到指定的默认客户端作用域