2017-10-02 48 views
0

Je suis en cours d'exécution ASP dll .NET de base sur IIS (avec AspNetCoreModule)nom d'identité de l'utilisateur d'hébergement IIS ASP .NET Core est vide et IsAuthenticated = false

Avec .NET précédente ASP je pouvais obtenir le nom d'identité de l'utilisateur avec :

HttpContext.Current.User.Identity.Name 

car il a été appelé directement dans le contexte IIS.

Avec ASP .NET de base le résultat est nul pour:

this.Request.User.Identity.Name 

Il semble que IIS ne retransmet pas ou peut-être mon module AspNetCore ne reçoit pas. Comment puis-je recevoir le nom d'utilisateur?

Répondre

0

J'ai résolu le problème. Comme je l'ai débogué:

Comme je ne savais pas si les informations d'identification de l'utilisateur étaient transmises par IIS, j'ai décidé d'imprimer les en-têtes HTTP Request du code au fichier journal. La réponse était là. J'ai compris que l'IIS fonctionne avec l'authentification de base. Il semble que l'authentification de base ne soit pas prise en charge dans AspNetCore, j'ai donc ajouté une implémentation de middleware qui analyse les informations de l'en-tête 'Authorization' et crée une nouvelle identité d'utilisateur à partir de celle-ci.

J'ai fait ma propre mise en œuvre, mais les articles suivants m'a beaucoup aidé:

https://blog.dangl.me/archive/http-basic-authentication-in-aspnet-core-projects/

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware