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

如何从Azure托管的App Service中获取已登录用户名称

根因说明

这是Azure App Service内置身份验证(俗称Easy Auth)和ASP.NET原生身份管线未打通的典型问题:

  • 你在Azure门户配置的强制登录是App Service网关层面的拦截,请求在到达应用代码前就已经完成了登录校验,但网关默认不会自动把身份信息填充到ASP.NET的HttpContext.Current.User对象中,只会把IsAuthenticated标记为true,对应的Name字段没有赋值,才会出现你看到的只有前缀没有用户名的情况。
  • Easy Auth完成校验后,会通过专属请求头、本地身份端点两种方式把用户信息透传给应用,需要你主动读取或者配置应用适配。
可落地的解决方案

二选一即可,优先选改动最小的方案1。

方案1:直接读取Easy Auth透传的请求头(零配置改动,仅需调整少量代码)

Easy Auth校验通过后,会在转发到应用的请求中携带X-MS-CLIENT-PRINCIPAL-NAME请求头,值就是当前登录用户的UPN(也就是你要的组织内用户名),直接读取即可,同时保留原有逻辑兼容本地运行场景:

protected void Page_Load(object sender, EventArgs e)
{
    // 读取Azure Easy Auth注入的用户名头
    var loginUserName = Request.Headers["X-MS-CLIENT-PRINCIPAL-NAME"];
    if (!string.IsNullOrWhiteSpace(loginUserName))
    {
        lblUserInfo.Text = $"Found User -- > {loginUserName}";
        return;
    }

    // 原有本地/其他认证场景逻辑
    if (HttpContext.Current.User.Identity.IsAuthenticated)
    {
        var identity = HttpContext.Current.User.Identity.Name;
        lblUserInfo.Text = $"Found User -- > {identity}";
        return;
    }
    
    lblUserInfo.Text = "Name Unknown!";
}

如果需要获取更多用户属性(比如邮箱、工号、部门信息),可以对X-MS-CLIENT-PRINCIPAL请求头做Base64解码,里面是序列化后的完整用户声明列表。

方案2:配置应用适配Easy Auth,让原生HttpContext.Current.User正常赋值

如果你不想修改读取用户信息的代码,想让原有逻辑直接生效,按以下步骤配置:

  1. 修改项目根目录的web.config,把应用默认的认证模式改为None,避免表单认证模块和Easy Auth冲突:
<system.web>
  <authentication mode="None" />
</system.web>
  1. 回到Azure App Service的身份验证边栏,确认「令牌存储」开关处于开启状态,否则网关不会向应用透传身份相关的请求头。
  2. 如果是基于OWIN管线的Web Forms应用,安装Microsoft.Owin.Security.ActiveDirectory包,在启动类中配置JWT令牌验证参数,对接App Service透传的身份令牌,即可自动填充HttpContext.Current.User的所有字段。
常见排查点

如果配置后还是拿不到用户名,逐一检查:

  • 确认AAD身份提供程序的回调地址配置正确,没有给首页路径配置匿名访问例外规则
  • 如果是ASP.NET Core应用,需要在请求管线中先调用app.UseAuthentication(),且顺序要放在授权、路由中间件之前
  • 不要在应用代码中自行实现登录/登出跳转逻辑,这部分已经由Easy Auth完全接管,自定义认证逻辑会覆盖透传的身份信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:12:27