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

如何限制Azure AD应用获取用户邮箱?能否仅获取Immutable ID?

仅获取Immutable ID而不访问用户详情的实现方案

没问题,你的需求完全可以实现!核心是调整登录流程的权限范围和数据获取方式,避免触发不必要的用户详情请求,具体来说:

1. 停止调用Microsoft Graph用户接口(关键)

你当前虽然授予了“登录用户”(通常对应Microsoft Graph的User.Read权限),但只要你的应用不主动调用GET /me或GET /users/{id}这类Graph API接口,就不会获取到任何用户详情数据。所以第一步就是确保你的登录流程只停留在获取令牌的阶段,不要额外请求用户信息。

2. 直接从ID Token提取Immutable ID

Immutable ID其实可以直接从Azure AD返回的ID Token(而非Access Token)中提取,根本不需要调用Graph API:

  • 如果是从本地AD同步到Azure AD的用户,ID Token里会包含immutable_id声明字段;
  • 你只需要在登录流程完成后,解析ID Token的JWT内容,直接读取这个字段即可。

3. 优化权限配置(可选但更严谨)

如果你想彻底避免误调用Graph API的风险,可以做以下调整:

  • 移除Microsoft Graph的User.Read权限,因为你根本不需要用它;
  • 在授权请求的scope参数中,只保留openid(这是OIDC登录的基础范围,用于获取ID Token),不要添加其他Graph相关的范围。

举个例子,你的授权请求URL应该类似这样:

https://login.microsoftonline.com/TenantId/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=id_token&redirect_uri=YOUR_REDIRECT_URI&scope=openid&nonce=YOUR_NONCE

这样一来,整个流程只会完成用户身份验证,返回ID Token供你提取Immutable ID,不会涉及任何用户详情的获取。

注意:如果用户是原生Azure AD用户(未从本地AD同步),ID Token里不会包含immutable_id字段,这种情况需要提前做好逻辑处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:37:58