Frage

Ich arbeite an einer Website, auf der sich Benutzer anmelden können, um mehr private Informationen zu erhalten.Mein Kunde hat eine andere Website, auf der er verwendet wird nt-Authentifizierung für den Zugriff darauf.

Was sie tun wollen, ist eine button auf der Website, an der ich arbeite, im privaten Bereich, der sie an die senden wird Nicht authentifiziert Site, aber es ist nicht erforderlich, dass sie sich bei dieser Site anmelden, sondern die übergeben Nutzername Und Passwort dass sie sich für sie auf meiner Website auf der anderen Website angemeldet haben.

Ist das möglich?und wie würde ich es erreichen?Gibt es einen besseren Weg, dies zu tun?

War es hilfreich?

Lösung

Hier ist eine (ungetestete) Theorie, deren Einzelheiten stark davon abhängen, welche Arten der Authentifizierung die SharePoint-Site akzeptiert.Ich werde es in Angriff nehmen Basic, da es am einfachsten ist.

Sie schreiben etwas JavaScript, das XMLHttpRequest verwendet, um eine Anfrage an die Sharepoint-Site zu senden, und fügen ihren Benutzernamen und ihr Passwort zu den Anfrageheadern hinzu.Ihr Browser führt dieses JavaScript aus und meldet sich bei der SharePoint-Site an.

Wenn sie nun auf den Link klicken, sollte der Browser des Clients über die zwischengespeicherten Anmeldeinformationen verfügen, die an die Sharepoint-Site gesendet werden sollen.

Mögliche Probleme:

  • XMLHttpRequest erlaubt keine domänenübergreifende Authentifizierung
  • Browser und XHR geben keine Authentifizierungsinformationen weiter
  • Sharepoint und XHR können sich nicht auf die Authentifizierungsmethode einigen

Eine andere Möglichkeit besteht darin, die Verbindung zu Sharepoint zu Proxy zu machen, wodurch Sie sich serverseitig anmelden können (unter Umgehung von XHR-Einschränkungen und Browsersicherheit), was jedoch eine Belastung Ihres Servers und möglicherweise einige Probleme mit dem URL-Ziel erfordert.

Andere Tipps

Wie validiert die andere Website Ihren Benutzernamen und Ihr Passwort?

Im Idealfall sollte sich Ihre Site nicht einmal das Passwort des Benutzers merken, um es an eine andere Site weitergeben zu können (Sie speichern Hashes des Passworts, nicht das Passwort selbst, und verwenden bei der Validierung nur das tatsächliche Passwort).

Was wäre, wenn Ihre Site dem Benutzer ein Token zur Verfügung stellen würde, der dieses Token der neuen Site präsentiert, die wiederum Ihre Site auffordert, das Token zu validieren?Im Grunde vertraut die zweite Seite darauf, dass Sie ihnen sagen, wer der Benutzer ist.

Dies alles schlägt fehl, wenn die zweite Site die Windows-Konten tatsächlich für andere Zwecke als nur zum Abrufen eines Benutzernamens (z. B. Berechtigungen für die zugrunde liegende Datei) verwendet, da der Benutzer in diesem Szenario nicht als tatsächliches Windows-Benutzerkonto angemeldet ist.

Wenn Sie sich bei der zweiten Site authentifizieren müssen, müssen Sie möglicherweise einen neuen Thread erstellen und die Windows-LogonUser-API aufrufen.Sobald Sie das Sicherheitstoken haben, weisen Sie es dem neuen Thread zu und stellen Sie Ihre Verbindung über diesen Thread her.

LogonUser erfordert erweiterte Berechtigungen und ist kein verwalteter Code, daher gibt es einige ziemlich schwerwiegende Probleme bei der Verwendung.Aber das war die einzige Lösung, die ich finden konnte, um eine durch Formulare authentifizierte Site mit einem von Windows authentifizierten Dienst/einer von Windows authentifizierten Site kommunizieren zu lassen.

Hoffe das hilft.

Handelt es sich um eine Intranet-Umgebung?Wenn ja, sollten sie sich sowieso nicht anmelden müssen.Wenn Sharepoint mit „Integrierter Authentifizierung“ eingerichtet ist und die Site im IE als vertrauenswürdige Site aufgeführt ist, verwendet der Browser für die automatische Anmeldung die dortigen Netzwerk-Anmeldedaten.Dies kann eingerichtet werden Feuerfuchs sowie.

Ihre Benutzer können keine direkte Verbindung zur NTLM-Site herstellen, ohne eine NTLM-Herausforderung zu erhalten.Ich würde schreiben, was effektiv ein Proxy für die NTLM-Site wäre;Das heißt, Ihr serverseitiger Code verfügt über Anmeldeinformationen für die Verbindung mit der NTLM-Site und leitet die Anforderungen Ihrer Benutzer weiter.

Wie Sie bereits erwähnt haben, handelt es sich um SharePoint (Spucke) Bedenken Sie, dass SharePoint über eine Reihe von Webdiensten verfügt, die Sie hierfür verwenden können (anstatt Screen-Scraping durchzuführen).

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