Authentification Windows dans asp.net 5

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):

  1. Installer WebListener à partir de NuGet
  2. Ajoutez les utilisations suivantes à Startcup.cs:

    using Microsoft.AspNet.Http.Features; using Microsoft.Net.Http.Server; 
  3. 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; } 
  4. 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" }, 
  5. 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.

entrez la description de l'image ici entrez la description de l'image ici

Pour RC1 et IISExpress à partir d’une application Web vide:

  • Faites un clic droit sur le projet Web, sélectionnez Properties
  • Cliquez sur l’onglet 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: