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?
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>
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>
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.