好吧Stackoverflow,经过多次徒劳无功的研究后,我终于来了!
我正在尝试使用Windows身份验证和SSL从IIS托管的.NET Core 2.0站点,无论我尝试什么,我都会继续获得不一致/间歇性403访问被拒绝错误。
如果有什么东西出错,我希望它永远不会起作用。但是,如果我重新启动站点和应用程序池,它的工作量可能是~3 / 10次。我在事件查看器,应用程序日志或IIS跟踪日志中找不到任何有用的东西。
我没有按特定顺序完成的事情:
还有一个细节是,我正在尝试与来自不同域的用户进行身份验证,其中设置了单向信任。我正在使用“其他人”的凭据远程登录主持人。域名,因此它具有可见性。
这是我的web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\MCP.MVP.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true" startupTimeLimit="3600" requestTimeout="23:00:00" />
<defaultDocument>
<files>
<add value="/home/index" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
<!--ProjectGuid: [REDACTED] -->
来自Startup.cs:
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.Configure<IISOptions>(options =>
{
options.AutomaticAuthentication = true;
});
来自Program.cs
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
在任何地方使用授权属性:
[Authorize(Policy = "RequireViewerRole")]
授权胶水,其中Configuration [&#34; RequireViewerRoles&#34;]是以逗号分隔的域组列表:
services.AddAuthorization(options =>
{
options.AddPolicy("RequireViewerRole", policy => policy.RequireRole(Configuration["RequireViewerRoles"].Split(',')));
});
我是否已进入.NET Core 2.0错误区域,或者我错过了某些内容?
答案 0 :(得分:1)
原来是一只巨大的红鲱鱼!
这是401.2“无效的服务器配置”错误。我终于注意到了一个模式,如果我打开了文件夹安全权限对话框,应用程序将起作用,这会强行命中域控制器并从用户域缓存组名。该应用程序可以正常工作大约5分钟,然后再拒绝进行身份验证,而不进行其他更改。
通过在组中配置域名解决了该问题,回想起来这是显而易见的。 (DomainName \\ Domain Users)。它在没有域名的情况下工作的事实导致了很多混乱。 IIS日志中没有任何迹象表明此错误,最终通过反复试验解决了这个错误。