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

启用匿名认证时,如何让IIS传递Windows身份至ASP.NET Core应用?

解决同时启用匿名与Windows认证时身份传递问题

1. 调整ASP.NET Core认证服务配置

在Program.cs中,除了注册Windows认证方案,还需启用Negotiate认证(Windows认证的核心实现),并配置授权策略以兼顾匿名访问与身份验证需求:

using Microsoft.AspNetCore.Server.IISIntegration;

var builder = WebApplication.CreateBuilder(args);

// 添加Windows认证及Negotiate协议支持
builder.Services.AddAuthentication(IISDefaults.AuthenticationScheme)
    .AddNegotiate();

// 配置授权策略:默认要求用户认证,可通过[AllowAnonymous]标记开放匿名访问的页面/接口
builder.Services.AddAuthorization(options =>
{
    options.FallbackPolicy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .Build();
});

// 注册Razor Pages/MVC服务(根据项目类型调整)
builder.Services.AddRazorPages();

var app = builder.Build();

// 中间件顺序必须遵循:认证在前,授权在后
app.UseAuthentication();
app.UseAuthorization();

app.MapRazorPages();

app.Run();

2. 更新IIS站点认证设置

  • 打开IIS管理器,定位目标站点,进入身份验证功能面板
  • 确保匿名认证和Windows认证均处于启用状态
  • 双击Windows认证进入高级设置,勾选启用内核模式认证(InProcess托管模式下必须开启,否则身份令牌无法正常传递)

3. 完善web.config配置

在aspNetCore节点中添加authenticationSchemes属性,明确指定Windows认证支持的协议:

<aspNetCore processPath="dotnet" arguments=".\ContractShortening.Web.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true" hostingModel="inprocess" authenticationSchemes="Negotiate,NTLM" />

4. 在页面中处理身份获取逻辑

由于同时启用匿名认证,系统不会自动触发Windows认证,需在需要获取身份的页面(如_Layout.cshtml)中添加逻辑,主动发起认证挑战:

@inject IHttpContextAccessor HttpContextAccessor

@{
    var user = HttpContextAccessor.HttpContext.User;
    if (!user.Identity.IsAuthenticated)
    {
        // 发起Windows认证挑战,认证完成后跳转回当前页面
        var authProps = new Microsoft.AspNetCore.Authentication.AuthenticationProperties
        {
            RedirectUri = HttpContext.Request.Path
        };
        await HttpContext.ChallengeAsync(IISDefaults.AuthenticationScheme, authProps);
    }
}

<!-- 认证完成后即可正常获取身份信息 -->
<p>当前用户:@Context.User.Identity.Name</p>

5. 验证应用池配置

确保IIS应用池的身份设置为具备域访问权限的账户(如LocalSystem或域账户),避免因权限不足无法读取AD用户信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:25:20