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

在Azure Web App中从服务器端获取Azure AD用户组信息

在Azure Web App服务器端获取Azure AD用户组成员身份的实现方案

前提条件

  • Azure Web App已完成Azure AD身份验证配置。
  • 为Web App配置对应Microsoft Graph应用权限并完成管理员同意(按需选择User.Read.All或Directory.Read.All,遵循最小权限原则)。
  • 启用Web App的托管标识(系统分配或用户分配均可,推荐系统分配)。

具体实现步骤

1. 启用托管标识

登录Azure门户,进入目标Web App的标识 > 系统分配页面,将状态切换为开启,保存后记录应用的客户端ID(后续调用Graph API会用到)。

2. 配置Microsoft Graph应用权限

在Azure AD中找到Web App对应的企业应用,进入权限 > 添加权限:

  • 选择Microsoft Graph > 应用权限
  • 根据需求添加权限:
    • 仅需获取当前用户所属组:添加User.Read.All
    • 需要读取全量组信息:添加Directory.Read.All
  • 点击授予管理员同意完成权限生效。

3. 服务器端调用Graph API获取用户组

以ASP.NET Core为例,实现代码如下:

using Microsoft.Graph;
using Azure.Identity;
using System.Security.Claims;

public async Task<List<string>> GetCurrentUserGroupsAsync(HttpContext httpContext)
{
    // 从服务器端身份上下文获取用户Object ID
    var userId = httpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
    if (string.IsNullOrEmpty(userId))
        return new List<string>();

    // 使用托管标识初始化Graph客户端
    var graphClient = new GraphServiceClient(new DefaultAzureCredential());

    // 获取用户所属的组集合
    var groupResults = await graphClient.Users[userId].MemberOf
        .Request()
        .GetAsync();

    // 筛选并返回组名称列表
    return groupResults.CurrentPage
        .Where(item => item.ODataType == "#microsoft.graph.group")
        .Select(item => item.DisplayName)
        .ToList();
}

说明:

  • DefaultAzureCredential会自动利用Web App的托管标识获取Graph API的访问令牌,无需手动管理凭证。
  • 若使用用户分配的托管标识,需在DefaultAzureCredential中指定客户端ID:new DefaultAzureCredential(new DefaultAzureCredentialOptions { ManagedIdentityClientId = "你的用户分配标识客户端ID" })

4. 安全注意事项

  • 严格遵循最小权限原则,只授予满足业务需求的最窄权限。
  • 服务器端需确保请求携带的Azure AD ID令牌有效,Web App的内置身份验证中间件会自动完成令牌验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 06:31:00