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

AAD单点登录下访问文件系统的权限委托可行性问询

回答

可以实现,核心是让你的ASP.NET Core应用以当前登录用户的AD身份(而非应用自身权限)访问文件共享,这样就能自动继承AD中已配置的文件系统安全组权限。结合你的现有条件,具体实现如下:

关键实现步骤

1. 配置AAD应用权限

在Azure AD中为你的ASP.NET Core应用添加**Directory.AccessAsUser.All(委派权限)**,并完成管理员同意。该权限允许应用代表登录用户访问AD域内的资源。

2. 获取用户的AD身份标识

利用ASP.NET Core的身份认证上下文,提取用户的UPN(用户主体名称)——因为你的AAD与AD同步,用户的AAD UPN和AD UPN完全一致,可直接用来映射AD身份:

var userUpn = User.FindFirstValue(ClaimTypes.Upn);

3. 模拟用户身份访问文件系统

通过AD的UserPrincipal获取用户的Windows身份令牌,然后进行身份模拟,此时访问文件共享的操作会以用户自身的AD权限执行,自动遵守文件系统的安全规则:

using var domainContext = new PrincipalContext(ContextType.Domain);
var adUser = UserPrincipal.FindByIdentity(domainContext, userUpn);

if (adUser != null)
{
    // 模拟用户身份执行文件操作
    using (WindowsIdentity.Impersonate(adUser.Identity.Token))
    {
        // 示例:读取用户有权限的文件夹内容
        var accessibleFiles = Directory.GetFiles(@"\\你的文件服务器\目标共享文件夹");
        // 将文件列表返回给前端展示
    }
}

4. AD端配置委派(可选但推荐)

如果你的应用托管在已加入AD的Windows Server上,需要在AD域控制器中为应用的服务账号配置约束委派,允许其将用户身份委派给文件服务器的cifs服务(文件共享服务),确保身份模拟的合法性。

注意事项

  • 应用必须部署在能访问AD域控制器的环境中,才能完成AD身份的查询与模拟。
  • 确保用户的AAD账号与AD账号的UPN完全匹配,否则会出现身份映射失败。
  • 彻底停用应用自身的高权限文件访问逻辑,全程以用户身份操作,避免权限泄露风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:05:14