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

Azure AD应用配置:用户登录后全用户读取+自身写入权限设置

配置Azure AD应用实现“读所有用户+仅写自身信息”的权限方案

嘿,这个需求其实挺典型的,我来一步步给你拆解怎么实现,不用纠结搜索关键词,跟着做就行👇

一、注册Azure AD应用程序

首先得在Azure AD里注册你的应用:

  • 登录Azure门户,找到Azure Active Directory → 应用注册 → 新注册
  • 填写应用名称,选择适合你的账户类型(比如“仅此组织目录中的账户”),重定向URI可以暂时填个本地地址(比如http://localhost),完成注册

二、配置Microsoft Graph API权限

接下来给应用配置所需的权限,这里要用到两种委派权限(因为是登录用户的操作):

  1. 进入应用的API权限页面,点击添加权限 → 选择Microsoft Graph
  2. 选择委派权限,然后搜索并添加:
    • User.Read.All:允许登录用户读取目录内所有用户的信息(这个需要管理员同意)
    • User.ReadWrite:允许用户读取和修改自己的信息(普通用户可自行同意,或者管理员批量授予)
  3. 点击授予管理员同意(针对你的组织),确保User.Read.All权限生效

三、代码层面的关键校验(核心!)

Azure AD本身没有“只能修改自身信息”的内置权限,所以必须在你的应用代码里做逻辑控制,确保用户不能修改他人信息:

示例逻辑(以Microsoft Graph SDK为例)

  1. 先获取当前登录用户的ID:
// 初始化已完成身份验证的Graph客户端
var graphClient = new GraphServiceClient(authProvider);
// 获取当前用户信息
var currentUser = await graphClient.Me.GetAsync();
var currentUserId = currentUser.Id;
  1. 当用户发起修改请求时,校验目标用户ID是否和当前用户ID一致:
// 假设前端传入要修改的用户ID
var targetUserId = Request.Query["userId"];
if (targetUserId != currentUserId)
{
    // 返回403禁止访问
    return StatusCode(403, "仅允许修改自身信息");
}
// 执行修改操作(比如更新用户的显示名称)
var userUpdate = new User
{
    DisplayName = "新的显示名称"
};
await graphClient.Users[targetUserId].PatchAsync(userUpdate);

四、注意事项

  • 千万别给应用配置User.ReadWrite.All权限!这个权限会允许用户修改所有用户的信息,完全违背你的需求
  • 管理员同意User.Read.All时,要确认仅授予给必要的应用,遵循最小权限原则
  • 代码里的校验一定要做,不能依赖权限配置完全控制写入范围,因为权限只负责“允许做什么”,而你需要的是“只能做自己的”

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:13:05