我的Asp.Net Core mvc Web应用程序需要Windows身份验证。在开发中,在IIS Express上,由于这个设置,一切正常。
launchSettings.json
"iisSettings": {
"windowsAuthentication": true,
"anonymousAuthentication": false,
"iisExpress": {
"applicationUrl": "http://localhost:61545/",
"sslPort": 0
}
}
部署到IIS时,我得到一个空白页面。对我的网站的请求获得500错误代码。
我尝试将此配置添加到Startup.cs,如here所述,但没有成功。
services.Configure<IISOptions>(options => {
options.ForwardWindowsAuthentication = true;
});
当我直接在IIS中查看身份验证参数时,会激活Windows身份验证。
我发现一些帖子谈论了一个名为Microsoft.AspNetCore.Server.WebListener
的软件包,其他一些关于实现自定义中间件的软件包。我无法想象这个基本功能需要付出那么多努力。我错过了什么吗?
答案 0 :(得分:14)
launchSettings.json
文件仅供VS使用。当您发布应用程序(或在没有VS的情况下运行)时,launchSettings.json
未被使用。使用IIS / IISExpress运行时,只需确保web.config具有正确的设置。在您的情况下,web.config中的forwardWindowsAuthToken
属性缺失或设置为false
。必须将其设置为true
才能使Windows身份验证生效。发布前的示例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="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true"/>
</system.webServer>
</configuration>
答案 1 :(得分:0)
对我来说,我必须添加一行
services.AddAuthentication(IISDefaults.AuthenticationScheme);
在ConfigureServices
Startup.cs
中
我的应用程序允许Windows和匿名用户。
答案 2 :(得分:-1)
您需要检查项目目录中的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="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true"/>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
</configuration>