Nous avons la pile technique suivante dans notre application AngularJS2 API Asp.Net Core SQL Server
Nous devons maintenant stocker le nom d'utilisateur pour la table Utilisateur connecté dans lors de la création/modification pour un élément donné, c'est-à-dire dans l'API principale.
Nous avons essayé avec
J'obtiens le nom d'utilisateur avec WindowsIdentity lorsque je travaille avec Visual Studio, mais avec IIS, cela donne la valeur Asp.Netcore, c'est-à-dire le nom du pool.
L'authentification Windows est activée et l'authentification anonyme est désactivée.
Utilisation de IIS version 6.1
Est-ce que je manque quelque chose?
J'ai regardé autour de moi et il a été suggéré de créer l'application Asp.Net Core WebApi en utilisant l'authentification Windows.
Ainsi, lorsque j'ai créé Asp.Net Core WebApi à l'aide de l'authentification Windows, cela a fonctionné et j'ai obtenu des valeurs dans les objets User.Identity.
J'ai donc créé 2 applications, une avec authentification Windows et une sans, puis comparé tous les fichiers et trouvé les modifications dans les fichiers suivants.
Après cela, j'ai été capable de valeurs dans l'objet User.Identity.
Le fichier launchSettings.json:
{
"iisSettings": {
"windowsAuthentication": true,
"anonymousAuthentication": false
}
}
Le Web.Config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore forwardWindowsAuthToken="true" processPath="C:\Program Files\dotnet\dotnet.exe" arguments=".\YourWebsite.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
<security>
<authentication>
<windowsAuthentication enabled="true" />
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</configuration>
Avez-vous le paramètre forwardWindowsAuthToken défini sur true dans le fichier web.config?
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true"/>
Sous Windows Server 2012 R2/IIS 8.0, même après la définition de forwardWindowsAuthToken = true dans web.config, User.Identity.Name ne renvoyait pas le nom d'utilisateur mais IIS APPPOOL afin de résoudre le problème que j'ai modifié ci-dessous.
Pour plus de détails, voir le lien ci-dessous: https://blogs.iis.net/jaroslad/what-does-the-authenticateduseroverrideuser-do