通过 kcadm 在 keycloak 中启用多个受众

Enable multiple audience in keycloak via kcadm

我有微服务生态系统,所有与之交互的用户都需要对 keycloak 安装进行身份验证并接收 jwt 令牌。

一切都很好,我使用此代码段启用了观众支持:

/opt/jboss/keycloak/bin/kcadm.sh \
    create clients/d3170ee6-7778-413b-8f41-31479bdb2166/protocol-mappers/models -r your-realm \
    -s name=audience-mapping \
    -s protocol=openid-connect \
    -s protocolMapper=oidc-audience-mapper \
    -s config.\"included.client.audience\"="your-audience" \
    -s config.\"access.token.claim\"="true" \
    -s config.\"id.token.claim\"="false"

如此处所述:

很好,很管用。我的问题是,如何为受众启用多个值?我的意思是,我想允许同一个用户使用相同令牌使用 2 个不同的服务——每个服务都应该有不同的受众。

令牌应如下所示:

{
  "aud": [
    "audience-1",
    "audience-2"
  ]
}

其中 audience-1 是第一个服务预期的观众,audience-2 是第二个服务预期的观众。

甚至可以通过命令行来做到这一点吗?

我想我可能已经找到了答案。或者至少它对我有用:

kcadm.sh create clients/CLIENT_ID/protocol-mappers/models -r REALM_NAME \
  -s name=audience-mapping \
  -s prodocol=openid-connect \
  -s protocolMapper=oidc-audience-mapper \
  -s config.\"included.client.audience\"="audience" \
  -s config.\"access.token.claim\"=\"true\" \
  -s config.\"id.token.claim\"=\"false\"