2008-09-04 14 views
1

Ich arbeite auf einer Website, wo Benutzer anmelden können, um mehr private Informationen zu erhalten. Mein Client verfügt über eine andere Site, wo NT-Authentifizierung für den Zugriff verwendet wird.NT Authentifizierung Login

Was wollen sie ist zu tun, um eine button auf der Website habe ich unter dem privaten Bereich arbeite an, die sie an die nt authentifizierten Seite senden, aber sie nicht auf die Site anmelden erfordern stattdessen die vorbei Benutzername und Passwort, dass sie verwendet, um sich auf meiner Website für die andere Website für sie anmelden.

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

Antwort

1

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

Sie schreiben JavaScript aus, das XMLHttpRequest verwendet, um eine Anfrage an die Sharepoint-Site zu senden, und fügen Sie den Anforderungsheadern ihren Benutzernamen und ihr Kennwort hinzu. Ihr Browser wird dieses JavaScript ausführen und sich auf der Sharepoint-Site einloggen.

Jetzt, wenn sie auf den Link klicken, sollte der Browser des Clients die zwischengespeicherten Anmeldeinformationen zum Senden an die Sharepoint-Site haben.

Mögliche Probleme:

  • XMLHttpRequest nicht Cross-Domain-Auth
  • Browser und XHR nicht teilen Auth Info
  • Sharepoint und XHR nicht einigen können auf Auth Methode
erlaubt

Eine andere Möglichkeit besteht darin, die Verbindung zu Sharepoint zu übernehmen, wodurch Sie sich serverseitig anmelden können (unter Umgehung der XHR-Einschränkungen und der Browser-Sicherheit), aber auf Ihrem Server und möglicherweise einigen UR-Servern belastet werden müssen L Zielprobleme.

0

Wie validiert die andere Seite Ihren Benutzernamen und Ihr Passwort?

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

Was ist, wenn Ihre Site dem Benutzer ein Token bereitgestellt hat, der dieses Token der neuen Site präsentiert, die wiederum Ihre Site auffordert, das Token zu validieren. Im Grunde vertraut Ihnen die zweite Seite, dass Sie ihnen sagen, wer der Benutzer ist.

Das alles bricht zusammen, wenn die zweite Website tatsächlich die Windows-Konten für alles andere als nur das Abrufen eines Benutzernamens verwendet (z. B. Berechtigungen für die zugrunde liegende Datei), da der Benutzer nicht als das tatsächliche Windows-Benutzerkonto angemeldet ist In diesem Szenario.

0

Wenn Sie sich bei der zweiten Website 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 machen Sie Ihre Verbindung über diesen Thread.

LogonUser erfordert erweiterte Berechtigungen und ist kein verwalteter Code, daher gibt es einige schwerwiegende Probleme bei der Verwendung. Aber das war die einzige Arbeit, die ich finden konnte, um eine authentifizierte Forms-Website zu erhalten, die mit einem authentifizierten Windows-Service/einer Website redet.

Hoffe, das hilft.

0

Ist dies eine Intranetumgebung? Wenn ja, sollten sie sich sowieso nicht einloggen müssen. Wenn Sharepoint mit "Integrated Authentication" eingerichtet wird und die Site im IE als vertrauenswürdige Site aufgeführt ist, verwendet der Browser dort das Netzwerk-Cred für die automatische Anmeldung. Dies kann auch unter firefox eingestellt werden.

0

Ihre Benutzer können sich nicht direkt mit der NTLM-Site verbinden, ohne eine NTLM-Anforderung zu erhalten. Ich würde schreiben, was eigentlich ein Proxy für die NTLM-Site wäre; d. h., Ihr serverseitiger Code verfügt über Anmeldeinformationen zum Herstellen einer Verbindung mit der NTLM-Site und übergibt die Anforderungen Ihrer Benutzer.

Wie Sie erwähnen, es ist SharePoint (spucken) bedenken Sie, dass SharePoint eine Reihe von Web Services hat, die Sie dafür verwenden könnten (anstatt Bildschirm scraping).

Verwandte Themen