尝试在两个Keycloak之间联合用户时发生意外错误(令牌的访问者错误)

时间:2019-05-20 10:23:20

标签: keycloak

我有两个秘诀,一个是6.x(父IDP),另一个是3.x(子IDP),并且在尝试将用户从父级联合到子级Im时遇到意外错误。子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,并且如果我尝试从父级到子级无缝地联合,是否有人知道此问题的根本原因?

1 个答案:

答案 0 :(得分:2)

之所以发生这种情况,是因为从版本4.6.0开始,它决定不将受众属性添加到令牌中。这就是为什么较旧的密钥斗篷抱怨令牌中的错误观众的原因。

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

  • 名称:受众地图
  • 选择映射器类型:受众
  • 包含的客户对象:联盟客户的名称
  • 添加访问令牌:打开

然后转到联合客户端,然后在“客户端作用域设置”标签中,

将可用的客户范围“ aud_scope”添加到已分配的默认客户范围