AUTH_USER Hilfe ich komm nicht ran!
Stefan
- webserver
Hallo zusammen,
bei meinem Projekt muss ich mich auf einen externen LDAP Server connecten und mich von diesem authentifizieren lassen.
Nun will ich auf einem anderen WebServer (IIS) die AUTH_USER
variable so setzen dass sie jeder Zeit wieder abrufbar ist.
Ist das so möglich?
Wie kommen die Informationen des LDAP zum IIS?
mir ist klar wie ich die Strings abholen muss!
Request.ServerVariables["AUTH_USER"]
aber leider kommt da immer ein leerer String zurück.
Danke für eure Hilfe,
schöne Grüße aus Ulm und schöne Weihnachten!
Stefan
Stefan an Stefan :o)
Also ich höre nicht genau raus was du machen möchtest. Willst Du einen PopUp für die AUTH? Und dann diese Daten weiter speichern?
Bitte erklär mal die Zusammenhänge, was passiert zB wenn ein User auf die Seite kommt, was muss er tun?
Gruß Stefan
Stefan an Stefan
Also das läuft so:
Ein Benutzer kommt an ein Portal und kann sich da "einloggen".
Danach sollte laut unserem Gedankengang die Servervariablen AUTH_USER und AUTH_PASSWORD gesetzt sein.
Nun klickt der User auf einen Link der Seite die von mir erstellt wurde.
Das ganze (Portal + meine Seiten) laufen auf dem gleichen Webserver.
Ich will nun die Servervariablen auslesen, nochmal gegenchecken zum LDAP um zu wissen zu welcher Gruppe (Gast, Mitarbeiter ...) der User gehört.
Das Problem ist, dass ich das Portal nicht implementiere, sonst könnte ich einfach das Ganze zeugs von Anfang an in die Session schreiben.
Kannst Du damit was anfangen?
cu,
Stefan
Moin!
Ein Benutzer kommt an ein Portal und kann sich da "einloggen".
Wie?
Formular? HTTP-Auth? Welche URL hat das Login, welche deine Seite?
Danach sollte laut unserem Gedankengang die Servervariablen AUTH_USER und AUTH_PASSWORD gesetzt sein.
Umgebungsvariablen sind immer nur bezogen auf den jeweiligen, einzelnen Request gefüllt. Du kannst nicht einfach eine globale Variable "User=Name" setzen, weil dieser Username dann ja für alle User gelten müßte. Wie sollte der einem einzelnen Request zugeordnet werden?
Antwort: Entweder HTTP-Auth. Da sendet der Browser die Userdaten jedesmal mit, aber eben nur, wenn man sich innerhalb eines globalen Verzeichnisses befindet. Beispiel:
example.com/ <- Hier anmelden
example.com/deine/seite.html <- Anmeldung gilt auch noch hier.
example.com/login/index.html <- Hier anmelden
example.com/deine/seite.html <- Anmeldung gilt hier nicht.
Wenn Sessions für das Portal verwendet werden, bist du gezwungen, den gleichen Mechanismus auch zur Authentifizierung deiner Seite zu verwenden.
- Sven Rautenberg
hi Sven,
Das ganze ist eine aspx.net Webanwendung.
Es gibt zwei Eingabefelder die auf Button_Click abgefragt werden.
Login URL:
http://Portal
Die URL meiner Seite ist:
http://Portal/meine_Seite
Umgebungsvariablen sind immer nur bezogen auf den jeweiligen, einzelnen Request gefüllt.
Genau: Deshalb geht die Abfrage auch mit:
Request.ServerVariables["AUTH_USER"];
Das Problem ist nur:
Wie kann der LDAP Server dem IIS sagen: "Hey, da hat sich der USER dieser Session erfolgreich angemeldet, hier ist sein Name + Password".
Ich bin bereit das auch händisch zu machen.
Request.ServerVariables.Set("AUTH_USER", username);
Leider wird dann folgender Fehler geworfen:
"Servervariablen können nicht ohne weiteres gsettzt werden"
Gruß,
Stefan
Moin!
Genau: Deshalb geht die Abfrage auch mit:
Request.ServerVariables["AUTH_USER"];Das Problem ist nur:
Wie kann der LDAP Server dem IIS sagen: "Hey, da hat sich der USER dieser Session erfolgreich angemeldet, hier ist sein Name + Password".
LDAP kommuniziert nur mit dem Webserver, nicht mit dem Browser.
Der LDAP-Server kriegt also nie zu wissen, was der Webserver mit den Browsern kommuniziert.
Alle mir bekannten Authentifizierungsverfahren für HTTP arbeiten immer so, dass der Browser dem Webserver irgendeinen individuell verschiedenen Wert sendet (sei es eine Session-ID oder eben Username/Passwort) - bei JEDEM Request, nicht nur einmal. Dabei ist es grundsätzlich egal, ob die Daten als Cookie, URL-Parameter oder Formularwert gesendet werden.
Der Webserver sucht dann in der Benutzerdatenbank nach, ob entweder der Benutzername und das Passwort korrekt sind, oder er sucht die Session-Daten raus, in denen drinsteht, ob der Benutzer sich schon mal erfolgreich mit Benutzername und Passwort angemeldet hat. Und wenn man kompliziertere Rechtesysteme hat, dann kann man mit dem Benutzernamen und Passwort aus der Session die Benutzerdatenbank auch noch mal nach den Rechten fragen (andere Leute speichern die direkt in der Session - ist schneller).
Benutzerdatenbank ist bei dir LDAP. Schön. Aber es ändert am Prinzip nichts: Du mußt irgendwie Benutzername und Passwort herausfinden, wenn du LDAP was über den Benutzer fragen willst. Und dazu mußt du zwingend den gleichen Mechanismus verwenden, den auch das Portal verwendet, denn ansonsten hättest du eine zweite Anmeldung, die der Benutzer für den Zugriff auf deine Seite machen muß.
Ich bin bereit das auch händisch zu machen.
Request.ServerVariables.Set("AUTH_USER", username);
Leider wird dann folgender Fehler geworfen:
"Servervariablen können nicht ohne weiteres gsettzt werden"
Du kannst das nicht händisch machen. Du mußt herausfinden, wie das Portal die Benutzerinformationen erhält und verwaltet. Ich vermute, es wird eine Session per Cookie genutzt (ist bei ASP typischerweise direkt eingeschaltet - lästiges Zeugs, das). Das bedeutet, dass du irgendwelche Session-Variablen hast, auf die du zugreifen kannst, und in denen wahrscheinlich auch der aktuelle Benutzername, das Passwort, und vielleicht sogar die Benutzerrechte drinstehen.
Aber an diesem Punkt kann dir niemand weiterhelfen, weil das eben ganz stark vom Portal abhängt, und von dessen Programmierung.
- Sven Rautenberg