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

如何用Keycloak获取的访问令牌调用Microsoft Graph API?

解决Keycloak 21.1.1集成Azure AD访问Microsoft Graph API的方案

1. 确认Azure AD应用的权限配置(关键前置)

  • 确保Azure AD应用已添加Delegated权限(用户上下文访问Graph需用此类型),比如Mail.Read、Mail.Write,并且已完成管理员同意(租户级应用必须操作)。
  • 匹配Keycloak的客户端类型:若Azure应用是机密客户端,需保存客户端密钥;若是公共客户端,确保应用设置中允许公共客户端流。

2. 调整Keycloak Azure AD身份提供商(IDP)配置

进入Keycloak后台,找到已创建的Azure AD OIDC IDP并编辑:

  • 配置标签页:根据Azure应用类型勾选Client Authentication,机密客户端需填入正确的客户端密钥。
  • 高级标签页:将Use JWT from response设为On,确保Keycloak能获取Azure返回的原始令牌。
  • 范围字段:填入openid email profile Mail.Read Mail.Write(必须包含openid作为OIDC基础范围,后续追加所需的Graph权限)。

3. 配置Keycloak客户端的令牌映射(传递Azure访问令牌)

找到你的业务应用对应的Keycloak客户端,进入客户端范围标签:

  • 添加与Azure AD IDP关联的客户端范围,或直接创建自定义范围:
    • 新建客户端范围,类型选User Attribute,关联到Azure AD IDP。
    • 新增IDP Access Token映射器:
      • 名称自定义(如Azure AD Access Token)
      • 映射器类型选IDP Access Token
      • 勾选添加到访问令牌(若需ID令牌携带则同时勾选)
      • 声明名称可保留默认idp.access_token或自定义为azure_access_token

4. 验证与调试

  • 用户登录后,从Keycloak获取的访问令牌中,应能找到对应声明(如idp.access_token),其值即为Azure颁发的带Graph权限的访问令牌。
  • 用该令牌调用Graph API(如GET https://graph.microsoft.com/v1.0/me/messages),验证是否能正常返回数据。

常见问题排查

  • 找不到Azure访问令牌:检查Keycloak IDP的Use JWT from response是否开启,以及客户端映射器是否启用。
  • Graph API返回权限不足:确认Azure应用的权限已完成管理员同意,且Keycloak IDP的范围字段包含所需权限。
  • Keycloak获取Azure令牌失败:核对Azure应用的重定向URI是否与Keycloak IDP回调地址(格式:https://<keycloak-domain>/realms/<realm-name>/broker/azure-ad/endpoint)完全匹配,客户端密钥是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:07:13