You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Quarkus OIDC集成从Keycloak获取姓名及邮箱的问题

问题分析与解决方案

问题核心

使用admin_cli获取的access_token包含given_name、family_name、email等用户属性,但Quarkus OIDC注入的token仅包含groups等角色信息。尝试配置quarkus.oidc.authentication.scopes=openid,profile,groups时,因scope重复触发invalid_scope错误。

错误原因

Quarkus OIDC的认证流程默认自动包含openid scope,手动配置时重复添加openid,导致Keycloak检测到重复scope并拒绝请求。

解决方案

1. 修正Scope配置

移除重复的openid,添加需要的profile和email scope(profile包含given_name、family_name,email对应邮箱属性):

quarkus.oidc.authentication.scopes=profile,email

2. 检查Keycloak客户端配置

  • 登录Keycloak控制台,找到你的客户端my-app:
    • 进入Scopes标签页,确保profile、email在Assigned Default Scopes列表中(或开启Full Scope Allowed)
    • 进入Mappers标签页:
      • 确认存在groups映射器(默认通常已配置,确保将用户角色映射到groups声明)
      • 检查用户属性映射器:确保given_name、family_name、email这些属性被正确映射到access_token中(可通过添加"User Property"类型的映射器,将对应属性名称填入"User Property"和"Token Claim Name"字段)

3. 验证结果

重启Quarkus应用,完成认证后,通过注入的JsonWebToken对象即可同时获取:

  • 角色信息:token.getClaim("groups")
  • 用户属性:token.getClaim("given_name")、token.getClaim("family_name")、token.getClaim("email")

内容的提问来源于stack exchange,提问作者zeppelinux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 04:10:36