Je construis une application intranet dans ASP .NET 5, MVC 6. Je souhaite savoir comment activer l’authentification Windows.? Le modèle de projet par défaut ne prend en charge que les comptes d’utilisateurs individuels.
La réponse de Mark est toujours valide dans ASP.Net RC1. Il y a quelques étapes supplémentaires pour lier le tout (je n’ai pas assez de réputation pour commenter sa solution):
Ajoutez les utilisations suivantes à Startcup.cs:
using Microsoft.AspNet.Http.Features; using Microsoft.Net.Http.Server;
Ajoutez l’extrait de code de Mark dans la méthode Configure avant app.UseMvc:
// 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(); if (listener != null) { listener.AuthenticationManager.AuthenticationSchemes = AuthenticationSchemes.NTLM; }
Pour déboguer ceci, vous devez append la cible d’exécution WebListener dans project.json
, comme Mark l’a noté dans une réponse différente:
"commands": { "weblistener": "Microsoft.AspNet.Server.WebListener --config hosting.ini", "web": "Microsoft.AspNet.Server.Kestrel" },
Choisissez weblistener au lieu d’IIS Express ou de Web (Kestrel) pour déboguer votre application.
En plus des autres réponses ici, qui ne sont hébergées que par IIS, vous pouvez activer l’authentification Windows dans un projet ASP.NET 5 auto-hébergé (testé sur les versions bêta 7 et 8) en ajoutant les éléments suivants dans le fichier de Configure
Startup.cs. méthode, avant l’ app.UseMvc
ou similaire que vous souhaitez protéger:
MISE À JOUR POUR 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(); if (listener != null) { listener.AuthenticationManager.AuthenticationSchemes = AuthenticationSchemes.NTLM; }
REPONSE PRECEDENTE POUR 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; }
Adapté de l’ exemple officiel MusicStore .
Si vous déboguez à l’aide de Visual Studio 2015 avec IIS Express, vous pouvez activer l’authentification Windows via une case à cocher située dans la page de propriétés de débogage d’un projet, plutôt que de manipuler le fichier applicationhost.config
. Je ne pouvais pas faire fonctionner la solution web.config pour le débogage IIS Express, une erreur s’exprimant au sujet de la non-validité de la configuration à ce niveau. Notez que cela ne fonctionne pas actuellement en version 8 – voir ce numéro
Le fichier $(ProjectDir)\Properties\launchSettings.json
va $(ProjectDir)\Properties\launchSettings.json
Visual Studio à générer un fichier web.config
lors du débogage approprié pour IISExpress pour lequel le nœud
défini en fonction des parameters de lancement.
launchSettings.json
un exemple 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" } } } }
Mais utilisez également l’extension app.UseIISPlatformHandler();
au lieu de manipuler l’auditeur. L’extension configurera un middleware qui demandera automatiquement NTLM et traduira les descripteurs appropriés d’IIS.
Lors du déploiement sur IIS, si vous utilisez WebListener
vous devez append vous-même le nœud d’ authentication
à web.config
. Si vous utilisez HttpPlatformHandler
(ce que je recommande personnellement) et si vous utilisez un proxy pour kestrel, ajoutez forwardWindowsAuthToken="true"
au nœud httpPlatform
dans le web.config
.
Avec l’hébergement IIS, vous pouvez append un fichier web.config à votre répertoire wwwroot avec les configurations IIS pour votre application.
web.config
J’ai fait tout ce que j’ai trouvé sur Internet, personne n’a travaillé. Donc, j’ai regardé les fichiers de configuration aspnet 4.5, et j’ai vu qu’il utilise:
disabled enabled
sur le fichier .csproj, je viens de copier dans le fichier .xproj de aspnet 5 et cela a fonctionné.
Comme vous créez une nouvelle application, vous pouvez modifier le type d’authentification en cliquant sur Change Authentication
. Cela fera apparaître une sélection où vous pouvez changer le type de type en Authentification Windows.
Pour RC1 et IISExpress à partir d’une application Web vide:
Properties
Debug
, cochez Enable Windows Authentication
Ceci a affecté ~/Properties/launchSettings.json
comme suit:
"windowsAuthentication": true, "anonymousAuthentication": false,
Si vous souhaitez activer l’authentification Windows sur le projet Web en cours:
Sur l’explorateur de solutions, cliquez à droite sur le site Web et sélectionnez “Fenêtre Propriétés”.
Définissez “Authentification anonyme” sur “Désactivé”
Et définir “Authentification Windows”
Exécutez le projet et tout ira bien.
Vous devez configurer manuellement IIS Express (dans VS2015 CTP6). Pour ce faire, éditez le fichier applicationhost.config. (C: \ Utilisateurs \ votre nom d’utilisateur \ Documents \ IISExpress \ config \ applicationhost.config)
Dans la balise de configuration, ajoutez ceci: