Azure Web App是否支持Windows身份验证?如何配置?
当然可行!我帮你梳理清楚整个流程,从可行性确认到具体操作步骤,一步步来:
可行性确认
完全没问题!不过有个前提:你的Web App必须是运行在Windows App Service计划上的——Linux计划的Web App不支持Windows身份验证。不管是普通多租户的Web App,还是部署在App Service Environment(ASE)里的,都能配置,只是ASE的场景支持更贴近本地AD的验证方式。
具体配置步骤
我分Portal操作和代码配置两部分来讲,你跟着做就行:
1. Azure Portal端启用身份验证
- 登录Azure Portal,找到你的目标Web App
- 左侧菜单里点Authentication(认证)选项
- 在「身份提供商」区域,点击Add identity provider(添加身份提供商)
- 选择Microsoft作为提供商,然后在「高级设置」里,「允许的令牌受众」可以留空,也可以填你Web App的客户端ID(如果有特定需求的话)
- 往下滑到「认证设置」,把「当请求未认证时采取的操作」设为Log in with Microsoft
- 保存设置,Azure会自动帮你配置基础的身份验证中间件
2. 应用代码侧配置(以.NET为例,这是Windows身份验证最常用的场景)
如果你用的是ASP.NET Core 3.1+
打开Program.cs,添加认证服务和中间件:
// 添加Windows身份验证服务 builder.Services.AddAuthentication(Microsoft.AspNetCore.Authentication.Negotiate.NegotiateDefaults.AuthenticationScheme) .AddNegotiate(); // 配置授权策略,确保未认证用户无法访问 builder.Services.AddAuthorization(options => { options.FallbackPolicy = options.DefaultPolicy; }); // 启用认证和授权中间件(注意顺序要对,在UseRouting之后,UseEndpoints之前) app.UseAuthentication(); app.UseAuthorization();
如果你用的是传统ASP.NET Framework
修改Web.config里的配置节点:
<system.web> <!-- 启用Windows身份验证 --> <authentication mode="Windows" /> <!-- 拒绝未认证的匿名用户 --> <authorization> <deny users="?" /> </authorization> </system.web>
3. 验证配置是否生效
访问你的Web App,浏览器会自动弹出Windows身份验证的登录窗口(如果你是域内机器,可能会自动用当前登录账户完成验证)。登录成功后,你可以在应用里通过User.Identity.Name(.NET里)获取登录的用户名,确认身份验证生效。
额外注意事项
- 多租户环境下的Windows身份验证依赖Azure AD,所以用户必须是Azure AD账户,或者本地AD同步到Azure AD的账户
- 如果要直接用本地Active Directory的身份验证,得把Web App部署到加入了你的域的App Service Environment(ASE)里,这种场景下可以完全复用本地AD的验证体系
- 一定要确保你的Web App启用了HTTPS,身份验证的敏感信息需要加密传输
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

