Frage

Ich bin sicher, es ist eine Anforderung viele Entwickler konfrontiert vor. Geschäft einen Audit-Trail muss wissen, wer Aktionen in ihrem System durchführt

Unabhängig davon, wie Sie die geprüfte Information wählen speichern, wobei der Kern des Problems ist, wie der aktuellen Benutzer zu identifizieren.

Ich mag Komponenten schreiben, von kleinen Domäne Modellklassen zu Servicekomponenten, die alle, die sicher von einem der folgenden Host-Anwendungen aufgerufen werden können:

  • Ein Windows-Desktop-Anwendung.
  • Eine ASP.NET-Website in IIS gehostet wird.
  • Ein WCF-Dienst in IIS gehostet wird.
  • Ein WCF-Dienst in Windows-Dienst gehostet werden.

die Reihe von Technologien, die verschiedenen Authentifizierungsmodelle gegeben und für das Konzept einer „anonymen“ Benutzer-Konto hat, bin ich nicht klar, auf einer Strategie, um die Identität zu erhalten, zu verwenden wer meine Komponente in einer zentralisierten Weise aufgerufen .

Kann jeder von euch Smart Volk schlägt einen Ansatz, um dies zu bewältigen?

War es hilfreich?

Lösung

Ich würde in der Regel verlangt, dass Anträge Thread.CurrentPrincipal zu einer Haupt, deren Identität repräsentiert den aktuellen Benutzer festgelegt. Dies kann beim Start der Anwendung durchgeführt werden (mit WindowsIdentity.GetCurrent ()) in einem Client (WinForms oder Konsole) App von HttpContext.Current.User oder Roles.GetCurrentUser () in einer ASP.NET oder WCF-Anwendung in IIS gehostet, usw. .

Dann in der unteren Ebene Komponenten, die Sie einfach Thread.CurrentPrincipal.Identity für die Prüfung verwendet werden.

Bearbeiten . (Als Reaktion auf Kommentar) - beachten Sie, dass Thread.CurrentPrincipal.Identity hat nichts mit dem Sicherheitskontext des Threads zu tun: dies durch das Windows vertreten ist und abgerufen werden kann WindowsIdentity.GetCurrent mit und geändert WindowsIdentity.Impersonate mit

Andere Tipps

Der beste Ansatz, um die aktuellsten Techniken verwenden, ist wahrscheinlich Windows zu verwenden Identity Foundation .

WIF ist so konzipiert, Benutzeridentitätsfragen über mehrere Technologien behandeln .NET.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top