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

KeyCloak集成Azure AD作为身份提供商时的用户信息获取问题

问题与解决方案:KeyCloak集成Azure AD后无法获取用户邮箱信息

问题概述

已在KeyCloak中集成客户的Azure AD,但存在以下问题:

  • 用户配置文件数据中无法获取邮箱信息,但解码Bearer Token后能看到完整的邮箱字段
  • 勾选身份提供商设置中的“Verify JWT Token”时,触发“Verification Signature failed”错误
  • 取消勾选“Verify JWT Token”后登录,系统会查找不存在于配置文件数据中的邮箱映射器
  • 客户认为请求URL使用response_type=code而非response_type=code id_token是无法获取邮箱的原因,但在身份提供商设置中找不到修改response_type的选项
  • 当前已配置UPN映射器:类型为Attribute Importer,将Azure AD的upn字段映射到KeyCloak用户的username属性

分步解决方案

1. 修复JWT签名验证失败问题

勾选“Verify JWT Token”是合规的安全做法,需先解决签名验证失败:

  • 确认Azure AD身份提供商的JWKS URL配置:在KeyCloak的Azure AD身份提供商设置中,勾选“Use JWKS URL”,并填入正确的Azure AD公钥地址:https://login.microsoftonline.com/{你的租户ID}/discovery/v2.0/keys(替换{你的租户ID}为Azure AD门户中获取的租户ID)
  • 清除KeyCloak缓存:进入Realm Settings -> Cache,点击“Clear Cache”按钮,避免旧证书缓存导致验证失败

2. 配置邮箱字段映射器

既然Bearer Token中存在邮箱字段,只需在KeyCloak中添加对应映射器:

  • 进入Azure AD身份提供商的Mappers标签页,点击“Create”
  • 选择“Attribute Importer”类型,设置名称(如“邮箱映射器”)
  • 在“Attribute Name”中填写你解码Token后看到的邮箱字段名(通常为email或upn)
  • 在“User Attribute Name”中填写email,将该字段映射到KeyCloak用户的邮箱属性
  • 勾选“Claim JSON Type”为String,保存配置

3. 修改response_type为code id_token

response_type的修改需在客户端配置中操作,而非身份提供商设置:

  • 进入KeyCloak对应客户端的设置页面,切换到Advanced标签
  • 找到“Allowed Response Types”选项,添加id_token,确保列表包含code和id_token
  • 保存配置后,KeyCloak向Azure AD发起授权请求时会自动使用response_type=code id_token

4. 验证配置效果

  • 清除浏览器缓存,重新发起登录流程
  • 登录成功后,查看KeyCloak用户配置文件,确认邮箱字段已正确填充
  • 再次勾选身份提供商设置中的“Verify JWT Token”,确认无签名验证错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 03:35:07