Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp.Net核心MVC与IIS上的Windows身份验证_C#_Asp.net Core_Windows Authentication - Fatal编程技术网

C# Asp.Net核心MVC与IIS上的Windows身份验证

C# Asp.Net核心MVC与IIS上的Windows身份验证,c#,asp.net-core,windows-authentication,C#,Asp.net Core,Windows Authentication,我有一个带有Windows身份验证的ASP.NET核心MVC应用程序。我把它发布在我们公司本地网络的IIS服务器上。所有工作正常,所有用户使用其权限登录。但每次打开浏览器时,他们都需要输入凭据。每次我们看到输入用户名和密码的窗口时。如何自动登录 我将此字符串添加到Startup.cs public void ConfigureServices(IServiceCollection services) { … services.AddAuthentication(IISDefaults.Authe

我有一个带有Windows身份验证的ASP.NET核心MVC应用程序。我把它发布在我们公司本地网络的IIS服务器上。所有工作正常,所有用户使用其权限登录。但每次打开浏览器时,他们都需要输入凭据。每次我们看到输入用户名和密码的窗口时。如何自动登录

我将此字符串添加到Startup.cs

public void ConfigureServices(IServiceCollection services)
{
…
services.AddAuthentication(IISDefaults.AuthenticationScheme);

//custom authorization
services.AddAuthorization(options =>
{
   options.AddPolicy("Operator", policy => policy.AddRequirements(new CheckADGroupRequirement(Configuration["RolesConfig:Operator"], Configuration["RolesConfig:Manager"])));
   options.AddPolicy("Manager", policy => policy.AddRequirements(new CheckADGroupRequirement(Configuration["RolesConfig:Manager"])));
});

services.AddSingleton<IAuthorizationHandler, CheckADGroupHandler>();
//custom authorization

…
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
…
app.UseAuthentication();
…
}
public void配置服务(IServiceCollection服务)
{
…
服务.AddAuthentication(IISDefaults.AuthenticationScheme);
//自定义授权
services.AddAuthorization(选项=>
{
options.AddPolicy(“Operator”,policy=>policy.AddRequirements(新的CheckADGroupRequirement(配置[“RolesConfig:Operator”]、配置[“RolesConfig:Manager”]));
options.AddPolicy(“Manager”,policy=>policy.AddRequirements(新的CheckADGroupRequirement(配置[“RolesConfig:Manager]”));
});
services.AddSingleton();
//自定义授权
…
}
public void配置(IApplicationBuilder应用程序、IWebHostEnvironment环境)
{
…
app.UseAuthentication();
…
}
在IIS中,我设置为仅启用Windows身份验证


我发现的唯一解决方案是在Internet选项中设置自动登录,但我认为这是一种不好的做法。

不,如果只在Intranet或受信任区域启用,这不是一种不好的做法。请确保您的站点已添加到这些区域。顺便说一句,这是100%的浏览器问题。浏览器必须处理自身、服务器和AD之间的安全对话,并向服务器发送适当的令牌。不交换密码。您的帐户已在客户端计算机上进行身份验证。当我设置“仅在Intranet区域中自动登录”浏览器需要密码时,浏览器会告诉web服务器您已经在使用安全协议。只有当我设置“使用当前用户和密码自动登录”时,它才能正常工作。我尝试了不同的浏览器,结果是一样的。你的网站在内联网区域吗?如果没有,您需要添加ithmm。。。尝试此操作,转到工作站上的“控制面板\用户帐户\凭据管理器\添加Windows凭据”,然后添加凭据