c# - mvc - Autenticación de Windows en asp.net 5
tag helpers asp net core (9)
Además de las otras respuestas aquí, que son solo para IIS, puede habilitar la autenticación de Windows en un proyecto ASP.NET 5 autohospedado (probado contra beta 7 y beta 8) agregando lo siguiente en la
Configure
Startup.cs método, antes de la aplicación.
app.UseMvc
o similar que desee proteger:
ACTUALIZACIÓN PARA 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;
}
RESPUESTA ANTERIOR PARA 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;
}
Adaptado del ejemplo oficial de MusicStore .
Si está depurando con Visual Studio 2015 con IIS Express, puede activar la autenticación de Windows a través de una casilla de verificación en la página de propiedades de depuración para un proyecto ahora, en lugar de meterse con el archivo
applicationhost.config
.
No pude lograr que la solución web.config funcionara para la depuración de IIS Express, arroja un error acerca de que la configuración no es válida en ese nivel.
Tenga en cuenta que esto no funciona actualmente en beta 8 - vea
este problema
Estoy creando una aplicación de intranet en ASP .NET 5, MVC 6. Quiero saber cómo habilitar la autenticación de Windows. La plantilla de proyecto predeterminada solo admite cuentas de usuario individuales.
Con el alojamiento IIS, puede agregar un archivo web.config a su directorio wwwroot con configuraciones IIS para su aplicación.
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>
El archivo
$(ProjectDir)/Properties/launchSettings.json
activará Visual Studio para generar un archivo
web.config
cuando se depure adecuadamente para IISExpress que tendrá el nodo
<authentication/>
establecido de acuerdo con la configuración de inicio.
El siguiente es un ejemplo
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"
}
}
}
}
Pero también use la aplicación de extensión.UseIISPlatformHandler
app.UseIISPlatformHandler();
en lugar de manipular al oyente.
La extensión configurará un middleware que solicitará automáticamente NTLM y traducirá los identificadores apropiados de IIS.
Al implementar en IIS, si está utilizando
WebListener
, debe agregar el nodo de
authentication
usted mismo a
web.config
.
Si está utilizando
HttpPlatformHandler
(que recomiendo personalmente) y proxys para kestrel, agregue
forwardWindowsAuthToken="true"
al nodo
httpPlatform
en
web.config
.
Hice todo lo que encontré en internet, nadie trabajó. Entonces, busqué los archivos de configuración de aspnet 4.5 y vi que usa:
<IISExpressAnonymousAuthentication>disabled</IISExpressAnonymousAuthentication>
<IISExpressWindowsAuthentication>enabled</IISExpressWindowsAuthentication>
en el archivo .csproj, acabo de copiar al archivo .xproj de aspnet 5 y funcionó.
La respuesta de Mark sigue siendo válida en ASP.Net RC1. Hay algunos pasos adicionales para unir todo (no tengo suficiente reputación para comentar sobre su solución):
- Instalar WebListener desde NuGet
-
Agregue los siguientes usos a Startcup.cs:
using Microsoft.AspNet.Http.Features; using Microsoft.Net.Http.Server;
-
Agregue el fragmento de código de Mark en el método Configure antes de la aplicación.
// 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; }
-
Para depurar esto, debe agregar el destino de ejecución de WebListener en
project.json
, como Mark señaló en una respuesta diferente:"commands": { "weblistener": "Microsoft.AspNet.Server.WebListener --config hosting.ini", "web": "Microsoft.AspNet.Server.Kestrel" },
-
Elija weblistener en lugar de IIS Express of web (Kestrel) para depurar su aplicación.
Necesita configurar manualmente IIS Express (en VS2015 CTP6). Para ello, edite el archivo applicationhost.config. (C: / Usuarios / su nombre de usuario / Documentos / IISExpress / config / applicationhost.config)
En la etiqueta de configuración agregue esto:
<location path="{your site name}">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true" />
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</location>
Para RC1 e IISExpress desde una aplicación web vacía:
-
Haga clic con el botón derecho en el proyecto web, seleccione
Properties
-
Haga clic en la pestaña
Debug
, marqueEnable Windows Authentication
Esto afectó a
~/Properties/launchSettings.json
siguiente manera:
"windowsAuthentication": true,
"anonymousAuthentication": false,
Si desea habilitar la autenticación de Windows en el proyecto web actual:
En el explorador de soluciones, haga clic derecho en el sitio web y seleccione "Ventana de propiedades"
Establezca "Autenticación anónima" en "Deshabilitado"
Y establezca "Autenticación de Windows"
Ejecute el proyecto y todo estará bien.