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

如何获取用户用于Azure AD SSO登录的实际邮箱地址?

Azure AD SSO 回调环节获取用户实际登录邮箱方案

1 需请求的对应属性

根据你的实际需求选择对应属性即可:

  • 若需要获取用户本次登录实际输入的登录邮箱标识符:直接读取ID令牌中的login_hint声明,该值完全和用户本次登录输入的凭证一致,不受租户侧属性修改影响。
  • 若需要获取用户所属组织分配的官方主收发邮箱:调用Microsoft Graph /me接口读取proxyAddresses属性,该属性为数组,其中前缀为大写SMTP:的条目即为用户的主邮箱地址,和用户实际收发邮件的地址完全一致。
  • 若需要获取用户所有可用于登录的有效邮箱列表:调用Microsoft Graph /me接口读取signInNames属性,该数组中类型为emailAddress的条目均为用户绑定的合法登录邮箱。

2 所需申请的权限配置

  • 仅读取ID令牌的login_hint:无需额外申请API权限,只需在Azure AD应用注册的「令牌配置」板块添加login_hint作为可选声明即可,单租户、多租户部署方案均适用。
  • 调用Microsoft Graph读取用户属性:申请Microsoft Graph的User.Read委托权限即可,该权限为最小粒度权限,无需管理员审批,用户登录时自行同意即可授权;如果是后台无用户交互的服务场景,可申请User.Read.All应用权限,该权限需要租户管理员审批同意。

此前你测试的属性偏差原因

upn、preferred_username、email属性无法匹配实际登录邮箱的核心原因如下:

  • upn可由租户管理员任意修改,大量企业场景下UPN和用户实际登录、收发邮箱不一致
  • preferred_username仅为前端展示用字段,不保证和实际登录/业务邮箱一致
  • 原生email声明仅在个人微软账号场景下默认填充,组织账号场景下该字段默认无有效取值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 20:06:03