如何在Keycloak中移除aud声明里的"account"项?
Keycloak访问令牌中"aud": "account"的来源与移除方法
为什么会自动添加"account"到audience?
- Keycloak内置了一个名为
account的客户端,它是用于用户管理自身信息(比如调用/userinfo端点)的默认客户端。 - 当你创建新客户端并使用默认客户端作用域(如
roles、profile、email)时,这些作用域本质上属于account客户端,生成访问令牌时Keycloak会自动将account加入aud列表。 - 直接通过Admin UI评估Client Scopes时,默认会包含与
account关联的权限,这也会触发account被添加到audience。
能否移除"account"?怎么操作?
可以移除,需调整客户端配置,步骤如下:
- 关闭全作用域允许:进入自定义客户端的「Settings」页面,找到「Full Scope Allowed」选项并关闭,避免Keycloak自动添加所有默认作用域。
- 移除关联的默认作用域:在自定义客户端的「Client Scopes」页面,移除所有属于
account的内置作用域(如roles、profile、email等),替换为你自定义的作用域。 - 指定自定义audience:在客户端的「Advanced」设置中,找到「Access Token Audience」配置项,添加你需要的audience值,确保这里只包含目标客户端标识,不包含
account。
注意事项
如果完全移除account,用户将无法使用该令牌调用Keycloak的/userinfo端点(该端点要求令牌的audience包含account),请根据业务需求权衡是否移除。
内容的提问来源于stack exchange,提问作者Jeroen Heier
相关产品推荐
相关产品推荐

