我正在ASP .NET 5,MVC 6中构建一个Intranet应用程序。我想知道如何启用Windows身份验证。默认项目模板仅支持单个用户帐户。
答案 0 :(得分:7)
Mark的回答在ASP.Net RC1中仍然有效。还有一些额外的步骤将它们联系在一起(我没有足够的声誉来评论他的解决方案):
将以下用法添加到Startcup.cs:
using Microsoft.AspNet.Http.Features;
using Microsoft.Net.Http.Server;
在app.UseMvc:
之前的Configure方法中添加Mark's code snippet// If we're self-hosting, enable integrated authentication (if we're using
// IIS, this will be done at the IIS configuration level).
var listener = app.ServerFeatures.Get<WebListener>();
if (listener != null)
{
listener.AuthenticationManager.AuthenticationSchemes =
AuthenticationSchemes.NTLM;
}
要对此进行调试,您需要project.json
中的add the WebListener run target,正如Mark在其他答案中所述:
"commands": {
"weblistener": "Microsoft.AspNet.Server.WebListener --config hosting.ini",
"web": "Microsoft.AspNet.Server.Kestrel"
},
选择weblistener而不是Web(Kestrel)的IIS Express来调试您的应用程序。
答案 1 :(得分:5)
除了此处仅针对IIS托管的其他答案之外,您还可以在自托管的ASP.NET 5项目中启用Windows身份验证(针对测试版7和测试版8进行测试),方法是在启动时添加以下内容: .cs Configure
方法,在您希望保护的app.UseMvc
或类似之前:
BETA 8更新
// If we're self-hosting, enable integrated authentication (if we're using
// IIS, this will be done at the IIS configuration level).
var listener = app.ServerFeatures.Get<WebListener>();
if (listener != null)
{
listener.AuthenticationManager.AuthenticationSchemes =
AuthenticationSchemes.NTLM;
}
以前对BETA 7的回答
// If we're self-hosting, enable windows/integrated authentication.
// For IIS, this needs to be configured in IIS instead, and the
// following will have no effect.
if ((app.Server as ServerInformation) != null)
{
var serverInformation = (ServerInformation)app.Server;
serverInformation.Listener.AuthenticationManager.AuthenticationSchemes =
AuthenticationSchemes.NTLM;
}
改编自官方MusicStore example。
如果您正在使用带有IIS Express的Visual Studio 2015进行调试,则可以通过现在项目的调试属性页面中的复选框打开Windows身份验证,而不是弄乱applicationhost.config
文件。我无法使web.config解决方案适用于IIS Express调试,它会抛出有关配置在该级别无效的错误。 请注意,此版本目前无法在测试版8中使用 - 请参阅this issue
答案 2 :(得分:5)
$(ProjectDir)\Properties\launchSettings.json
文件将在为IISExpress进行适当调试时触发Visual Studio生成web.config
文件,该文件将根据启动设置设置<authentication/>
节点。
以下是launchSettings.json
{
"iisSettings": {
"windowsAuthentication": true,
"anonymousAuthentication": false,
"iisExpress": {
"applicationUrl": "http://localhost:65070/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"Hosting:Environment": "Development"
}
},
"web": {
"commandName": "web",
"environmentVariables": {
"Hosting:Environment": "Development"
}
}
}
}
但是也使用扩展名app.UseIISPlatformHandler();
而不是操纵侦听器。该扩展将设置一个中间件,它将自动请求NTLM并从IIS转换适当的句柄。
部署到IIS时,如果您正在使用WebListener
,则必须自己将authentication
节点添加到web.config
。如果您正在使用HttpPlatformHandler
(我个人推荐)并代理到kestrel,请将forwardWindowsAuthToken="true"
添加到httpPlatform
中的web.config
节点。
答案 3 :(得分:4)
使用IIS托管,您可以使用适用于您的应用程序的IIS配置将web.config文件添加到wwwroot目录。
的web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true" />
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</configuration>
答案 4 :(得分:1)
我做了我在互联网上发现的一切,没有人工作过。所以,我查看了aspnet 4.5配置文件,我看到它使用:
<IISExpressAnonymousAuthentication>disabled</IISExpressAnonymousAuthentication>
<IISExpressWindowsAuthentication>enabled</IISExpressWindowsAuthentication>
在.csproj文件上,我刚刚复制到aspnet 5的.xproj文件中并且有效。
答案 5 :(得分:1)
答案 6 :(得分:1)
对于RC1&amp;来自空Web应用程序的IISExpress:
Properties
Debug
标签,然后点击Enable Windows Authentication
这影响~/Properties/launchSettings.json
如下:
"windowsAuthentication": true,
"anonymousAuthentication": false,
答案 7 :(得分:1)
如果要在当前Web项目上启用Windows身份验证:
在解决方案资源管理器上,右键点击网站并选择&#34;属性窗口&#34;
设置&#34;匿名身份验证&#34;到&#34;禁用&#34;
并设置&#34; Windows身份验证&#34;
运行项目,一切都会好的。
答案 8 :(得分:0)
您需要手动配置IIS Express(在VS2015 CTP6中)。 为此,请编辑applicationhost.config文件。 (C:\ Users \ your username \ Documents \ IISExpress \ config \ applicationhost.config)
在配置标签中添加:
<location path="{your site name}">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true" />
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</location>