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

如何通过SAML获取Azure AD用户的个人资料头像?

获取Azure AD SAML登录用户头像的解决方案

我之前做Azure AD SSO集成的时候也碰到过这个问题——默认的SAML声明里确实没有用户头像的相关属性,不过有两个靠谱的办法能解决:

方法一:通过Microsoft Graph API实时获取

这是最通用也最可靠的方式,步骤如下:

  • 先确保你的应用在Azure AD里已经被授予User.Read或者User.ReadBasic.All的API权限(去应用注册的「API权限」页面配置就行,记得要授予管理员同意)
  • 从SAML登录的响应里拿到用户的objectId,这个属性一般默认会包含在声明里,如果没有的话,去企业应用的「用户属性与声明」里手动添加objectid作为输出声明
  • 用拿到的objectId调用Microsoft Graph的头像接口,示例请求如下:
GET https://graph.microsoft.com/v1.0/users/{user-object-id}/photo/$value
Authorization: Bearer {你的应用访问令牌}

接口返回的是二进制图片数据,你可以直接在前端渲染或者后端保存后使用。

方法二:自定义SAML声明返回头像API URL(简化后续调用)

如果不想每次都手动拼接API地址,可以通过Azure AD的声明转换功能,把头像的Graph API URL直接作为自定义声明返回给应用:

  1. 登录Azure AD门户,进入你的目标企业应用
  2. 切换到「单一登录」页面,找到「用户属性与声明」选项
  3. 点击「添加新声明」,设置声明名称(比如user_photo_url)
  4. 源选择「转换」,然后在转换规则里输入:
    https://graph.microsoft.com/v1.0/users/{user.objectid}/photo/$value
    
  5. 保存后,用户下次登录时,SAML响应里就会带上这个URL,应用直接调用这个地址就能拿到头像(同样需要确保应用有对应的Graph API权限)

划重点:Azure AD的SAML声明没办法直接返回二进制的头像数据,所以要么实时调用API拿数据,要么返回API地址让应用后续调用,两种方式都依赖Microsoft Graph的权限配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:30:04