web-dev-qa-db-fra.com

Asp.Net core MVC application Authentification Windows dans IIS

Mon application Web Asp.Net Core mvc nécessite une authentification Windows. En développement, sur IIS Express, tout fonctionne correctement grâce à ce paramètre

launchSettings.json

 "iisSettings": {
    "windowsAuthentication": true,
    "anonymousAuthentication": false,
    "iisExpress": {
      "applicationUrl": "http://localhost:61545/",
      "sslPort": 0
    }
  }

Lors du déploiement sur IIS, j'obtiens une page vierge. La demande sur mon site reçoit un code d'erreur 500.

J'ai essayé d'ajouter cette configuration à Startup.cs, comme expliqué ici , sans succès. 

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

Lorsque j'examine les paramètres d'authentification directement dans IIS, l'authentification Windows est activée.

J'ai trouvé un article qui parlait d'un paquet appelé Microsoft.AspNetCore.Server.WebListener, d'autres sur la mise en œuvre d'un middleware personnalisé. Je ne peux pas imaginer que cette fonctionnalité de base nécessite autant d’efforts pour fonctionner. Est-ce que je manque quelque chose?

9
Nicolas Boisvert

Le fichier launchSettings.json est uniquement utilisé par VS. Lorsque vous publiez votre application (ou exécutez sans VS), launchSettings.json n'est pas utilisé. Lorsque vous utilisez IIS/IISExpress, il vous suffit de vous assurer que votre configuration web est configurée correctement. Dans votre cas, l'attribut forwardWindowsAuthToken dans le fichier web.config est manquant ou est défini sur false. Il doit être défini sur true pour que l'authentification Windows fonctionne. Un exemple de web.config avant publication ressemblerait à ceci:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true"/>
  </system.webServer>
</configuration>
14
Pawel

Vous avez besoin de vérifier web.config dans votre répertoire de projet. Ce paramètre était m'aider.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true"/>
    <security>
      <authentication>
        <anonymousAuthentication enabled="false" />
        <windowsAuthentication enabled="true" />
      </authentication>
    </security>
  </system.webServer>
</configuration>
0
Dima Skokov

Pour moi je devais ajouter la ligne

services.AddAuthentication(IISDefaults.AuthenticationScheme);

dans la méthode ConfigureServices dans Startup.cs

Mon application autorise les utilisateurs Windows et anonymes.

https://docs.Microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2x#windows-authentication-httpsys--iisintegration

0
Mike Casas