Frage

Meine Firma hat eine große Anwendung, die wir sind Finishing. Es nutzt WCF als Back-bone mit Active Directory für die Authentifizierung. Dies funktioniert perfekt für eine der beiden Seiten wie das Authentifizierungsmodell ist Windows-und Sie haben einen Teil der Domäne zu sein in die Website zu unterzeichnen. Die Frage, die ich habe bezieht sich auf die andere Seite, die von außen zugänglich ist. Er setzt ClientCredentials.Windows.ClientCredential für den Proxy-Anruf mit einem bestimmten Benutzer / Pass für Vortäuschen eines AD-Anwender so die volle Sicherheitsmodell funktioniert. Das alles funktioniert genau so, wie auch erwartet.

Die Frage, die ich habe ist, auf dem Netz kann ich HttpContext.Current.User.Identity.Name verwenden, um die zur Zeit in Benutzern aus dem Formularauthentifizierung Stück angemeldet, aber dies zu tun, ich sicher, eine System.Web machen Referenz existiert gegen die DLL arbeite ich zur Zeit in. Unsere Basis-Objekte aus einer simplen Klasse kommen, die nicht über System.Web nicht kennen. Gibt es eine Möglichkeit, die Formulare Benutzer herauszufinden, wer in innerhalb dieses Basisobjekt Projekt angemeldet ist? Ich habe versucht, System.Security.Principal aber das gibt mir nur den Zugriff auf die Windows-Konten von dem, was ich sagen konnte, und wird mir nicht gut.

Ich weiß, dass eine Option ist nur System.Web verweisen und mit ihm getan werden, aber das klingt klugy mir wirklich und nicht die beste Option, damit ich für ein paar Tipps bin die Hoffnung, hier.

War es hilfreich?

Lösung

Thread.CurrentPrincipal.Identity wird genau die gleiche Sache wie HttpContext.CurrentContext... tun

Es wird die Identität mit der aktuellen Ausführung Thread zugeordnet zurückkehren, die in den meisten Fällen der angemeldete Benutzer ist *.

Hinweis: * Wenn Sie eine Delegation / Identitätswechsel verwenden oder als Dienstkonto ausgeführt wird, wird es die deretwegen immer Identität zurückgeben der Faden unter, aber in Ihrem Fall ist es nicht klingen wie Sie jeden Kontext tun Identität Umschaltung.

Andere Tipps

Wenn Benutzernamen als String genug für Sie ist,

Environment.UserName
// Environment.UserDomainName and MachineName can also be useful

MSDN

  

Ruft den Benutzernamen der Person, die den aktuellen Thread gestartet.

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