identité de l'utilisateur d'audit dans .NET - Qu'est-ce qu'une bonne stratégie?

StackOverflow https://stackoverflow.com/questions/2014933

  •  19-09-2019
  •  | 
  •  

Question

Je suis sûr que c'est une exigence de nombreux développeurs ont dû faire face avant. Entreprise a besoin d'une piste de vérification pour savoir qui exécutent des actions dans leur système

Quelle que soit la façon dont vous choisissez de stocker les informations vérifiées, le noyau de ce problème est de savoir comment identifier l'utilisateur.

Je veux écrire des composants, allant de petites classes de modèle de domaine à des composants de service, tout ce qui peut sans risque être appelés à partir de l'une des applications hôtes suivantes:

  • Une application de bureau Windows.
  • Un site Web ASP.NET hébergé dans IIS.
  • Un service WCF hébergé dans IIS.
  • Un service WCF hébergé dans un service Windows.

Compte tenu de la gamme de technologies, les différents modèles d'authentification et d'avoir à expliquer le concept d'un utilisateur « anonyme », je ne suis pas clair sur une stratégie à utiliser pour obtenir l'identité de celui qui invoque mon composant d'une manière centralisée .

Quelqu'un peut-il de vous des gens intelligents proposer une approche pour lutter contre cela?

Était-ce utile?

La solution

Je généralement exiger que les demandes fixées Thread.CurrentPrincipal à un dont l'identité représente l'utilisateur actuel. Cela peut se faire au démarrage de l'application (à l'aide WindowsIdentity.GetCurrent ()) dans un client (WinForms ou console), application de HttpContext.Current.User ou Roles.GetCurrentUser () dans une application ASP.NET ou WCF hébergé dans IIS, etc. .

Ensuite, dans les composants de niveau inférieur vous utilisez simplement Thread.CurrentPrincipal.Identity pour l'audit.

EDIT . (En réponse au commentaire) - noter que Thread.CurrentPrincipal.Identity n'a rien à voir avec le contexte de sécurité du fil: ceci est représenté par la WindowsIdentity et peut être récupéré à l'aide WindowsIdentity.GetCurrent et modifiée à l'aide WindowsIdentity.Impersonate

Autres conseils

La meilleure approche, en utilisant les techniques les plus récentes, est probablement d'utiliser de Windows Fondation identité .

WIF est conçu pour traiter les problèmes d'identité de l'utilisateur sur plusieurs technologies en utilisant .NET.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top