Wie erhalten Sie das angemeldete Windows-Domänenkonto von einer ASP.NET-Anwendung?

8

Wir haben eine ASP.NET-Anwendung, die ihre eigene Benutzer-, Rollen- und Berechtigungsdatenbank verwaltet, und wir haben kürzlich der Benutzer-Tabelle ein Feld hinzugefügt, das das Windows-Domänenkonto enthält.

Ich möchte es so einrichten, dass der Benutzer sich nicht physisch bei unserer Anwendung anmelden muss, sondern automatisch basierend auf dem aktuell angemeldeten Windows-Domänenkonto DOMAIN \ angemeldet wird. Nutzername. Wir möchten das Windows-Domänenkonto gegen unsere eigene Benutzertabelle authentifizieren.

Dies ist ein Kinderspiel in Windows Forms, ist dies in Web Forms möglich?

Ich möchte nicht, dass der Benutzer mit einem Windows-Problembildschirm aufgefordert wird. Ich möchte, dass unser System die Anmeldung übernimmt.

Erläuterung : Wir verwenden unser eigenes benutzerdefiniertes Principal-Objekt.

Erläuterung : Ich bin mir nicht sicher, ob es einen Unterschied macht oder nicht, aber wir verwenden IIS7.

    
mattruma 10.09.2008, 13:38
quelle

8 Antworten

1

Ich habe ziemlich genau das gemacht, was Sie vor ein paar Jahren machen wollen. Ich versuche, einen Code dafür zu finden, obwohl es bei einem früheren Job war, so dass der Code zu Hause ist.

Ich erinnere mich, obwohl ich diesen Artikel als meinen Ausgangspunkt benutzte. Sie richten den LDAP-Provider ein, so dass Sie tatsächlich eine Überprüfung des Benutzers gegenüber dem LDAP durchführen können. Eine Sache, um sicherzustellen, wenn Sie den LDAP-Ansatz versuchen. Stellen Sie in der Einstellungsdatei, in der Sie das LDAP einrichten, sicher, dass LDAP in Großbuchstaben geschrieben ist. Wenn dies nicht der Fall ist, wird es nicht aufgelöst.

    
pete blair 10.09.2008, 13:53
quelle
2

Die Integration dieser Art erfolgt auf Serverebene. IIS entscheidet, dass der Benutzer nicht angemeldet ist. und IIS sendet die Authentifizierungsaufforderung an den Benutzer zurück, auf den der Browser reagiert.

Da Sie die Domänenanmeldung verwenden möchten, gibt es nur eine Möglichkeit, dies zu tun; integrierte Windows-Authentifizierung . Dies funktioniert nur, wenn der IIS-Server ebenfalls Teil der Domäne ist und die Benutzer direkt auf die Maschine zugreifen, nicht über einen Proxy und von Maschinen, die ebenfalls Teil der Domäne sind (mit entsprechend angemeldeten Benutzern).

>

Allerdings kann Ihr benutzerdefiniertes Prinzipalobjekt Spaß und Spiele erzeugen. Authentifizierung dieses Typs wird ein WindowsPrincipal und eine WindowsIdentity; auf die Sie über das Benutzerobjekt zugreifen können (siehe Vorgehensweise: Verwenden der Windows-Authentifizierung in ASP.NET 2.0 )

Ich nehme an, dass Sie aufgrund Ihrer benutzerdefinierten Rollen einen benutzerdefinierten Prinzipal wünschen? Ich bezweifle, dass Sie die beiden gut spielen können; Sie könnten einen benutzerdefinierten Rollenanbieter erstellen, der Ihren Datenspeicher abfragt oder Sehen Sie sich ADAM an, eine Erweiterung von AD, die Rollen pro Programm bietet und kommt mit netten Management-Tools.

    
blowdart 20.09.2008 17:23
quelle
1
%Vor%

, um den aktuellen Domänenbenutzer zu erhalten. Natürlich müssen Sie sicherstellen, dass der IIS für die Windows-Authentifizierung eingerichtet ist.

    
Biri 10.09.2008 13:44
quelle
1

Dies könnte hilfreich sein:

%Vor%

Haftungsausschluss: Ich habe das von einem Technet-Artikel, aber ich kann den Link nicht finden.

    
Eric Z Beard 10.09.2008 13:49
quelle
0

Sie können System.Threading.Thread.CurrentPrincipal verwenden.

    
Omer van Kloeten 10.09.2008 14:18
quelle
0

Request.ServerVariables ["REMOTE_USER"]

Dies ist für Ihr Setup nicht bestätigt, aber ich erinnere mich, dass ich diese Zeit zurückverwendet habe.

    
John Sheehan 11.09.2008 18:41
quelle
0

Versuchen Sie Request.ServerVariables ("LOGON_USER").

Wenn die Verzeichnissicherheitsoptionen so eingestellt sind, dass dieses Verzeichnis keine anonymen Benutzer zulässt, werden die Surfer beim Aufrufen dieser Seite mit dem standardmäßigen modalen Dialog aufgefordert, nach Benutzername und Passwort zu fragen. Request.ServerVariables ("LOGON_USER") gibt diesen Benutzer zurück.

Dies wird jedoch wahrscheinlich nicht für Sie funktionieren, da Sie Ihre eigenen benutzerdefinierten Sicherheitsobjekte verwenden. Wenn Sie herausfinden können, wie Sie dieses Anmeldefeld umgehen oder NT-Anmeldeinformationen an die Site weitergeben, bevor sie nach ihnen fragt, sind Sie fertig.

    
CodingBytes 09.07.2009 20:12
quelle
0

Haben Sie über Identitätswechsel nachgedacht? Sie könnten die NT-Anmeldeinformationen des Benutzers in Ihrem benutzerdefinierten Sicherheitsobjekt speichern und den Benutzer dann einfach über den Code informieren, falls dies angemessen ist.

Ссылка

    
CodingBytes 10.07.2009 14:03
quelle

Tags und Links