Aspnet Core 1.1发布时缺少Windows身份验证

时间:2017-05-18 20:13:18

标签: asp.net-core asp.net-core-1.1

我注意到在发布我的新Aspnet Core 1.1(刚刚更新到VS 2017)项目时,它始终缺少来自web.config的forwardWindowsAuthToken="true"

更多信息和我找到的修复程序在这里:

https://developercommunity.visualstudio.com/content/problem/26751/publish-aspnet-core-to-iis-with-windows-authentica.html

我也尝试添加:

services.Configure<IISOptions>(options => { options.ForwardWindowsAuthentication = true; });

到我的ConfigureServices方法,但它没有帮助。

所以我的问题是,有没有办法让它正常工作?除了必须在部署后手动编辑web.config之外,还有一些命令行参数或其他自动化方法?

我认为这不重要,但这是一个asp.net核心1.1,目标4.6.2不是核心。

编辑:为了澄清,添加forwardWindowsAuthToken="true"有效,问题是它不会像我们基于核心1.0的项目那样自动添加。我想知道是否有办法在生成web.config时轻松实现自动化。

1 个答案:

答案 0 :(得分:0)

因此,我在.NET Core 1.1上使用IIS / Kestrel针对完整框架4.6.2和Windows身份验证编译而没有问题。首先,我在我的项目中有一个web.config,我的配置随我的应用程序一起发布,所以我不必每次都覆盖它,它是我项目的一部分,并包含很多自定义有用的我,除非我误解你也可以使用它。然后,在我的情况下,forwardWindowsAuthToken="true"足以能够使用像HttpContext.User.Identities.FirstOrDefault(id => id.GetType() == typeof(WindowsIdentity));

这样的代码检索Windows身份验证

我认为你缺少IIS级别的设置,forwardWindowsAuthToken是不够的,你还必须告诉IIS这个特定的Web应用程序正在使用Windows身份验证。为此,我配置了&#34;身份验证&#34; Web应用程序的一部分,启用Windows身份验证,并选择适当的提供程序(在我的情况下协商)。如果您只是启用了匿名身份验证,那么IIS不会向客户端询问用户的身份(使用身份验证协议,如negotiate和kerberos ticket),并且不会将其传输到您的.NET Core应用程序。 enter image description here