2010-11-24 12 views
25

Ich versuche, auf eine Website zuzugreifen, die kennwortgeschützt ist. Es verwendet keine Standardauthentifizierung (obwohl das gleiche Benutzer/Passwort-Feld in Firefox erscheint), da der Antwortheader WWW-Authenticate: Negotiate ist.Authentifizierungsprobleme mit WWW-Authenticate: Negotiate

Ich möchte den Anmeldevorgang automatisieren, indem Sie den richtigen Header senden.

In Grund Sie so etwas wie verwenden würde:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 

Was würde ich für verhandeln benutzen?

+1

Der WWW-Authenticate: Negotiate-Header bedeutet, dass der Server NTLM oder Kerberos (mindestens auf Betriebssystemen vor Windows 7 und Win 2008 Server, wenn zusätzliche Sicherheits-Support-Provider hinzugefügt wurden) zur Authentifizierung und Verschlüsselung verwenden kann. In diesem Fall von NTLM erfordert die Verhandlung, dass mehrere Nachrichten (Challenge/Response) ausgetauscht werden, bevor die gesicherte Sitzung eingerichtet wird, so dass kein "korrekter Header" von Anfang an gesendet werden muss. Sie finden Details zu Ihrem Problem http://msdn.microsoft.com/en-us/library/aa378748%28VS.85%29.aspx (von Microsoft bereitgestellte SSP-Pakete). –

Antwort

24

Der Webserver fordert Sie zu einem SPNEGO-Token (Einfacher und geschützter GSSAPI-Verhandlungsmechanismus) auf.

Dies ist eine Microsoft Erfindung für eine Art der Authentifizierung Verhandlungen für Web-SSO (Single Sign-on) zu verwenden:

  • entweder NTLM
  • oder Kerberos.

See:

+2

In einer der Anwendungen, mit denen ich arbeite, antwortet der ADFS-Server mit zwei WWW-Authenticate-Headerfeldern in der Antwort mit Werten WWW-Authenticate: Negotiate WWW-Authenticate: NTLM Was bedeutet die erste Kopfzeile mit "Negotiate" bedeuten? Von fiddler wie kann man herausfinden, welches Authentifizierungsprotokoll letztendlich verwendet wird? –

+0

Weg zu alt Kommentar. Für zukünftige Leser antworten. Sie können den Fiddler überprüfen, welcher Authentifizierungsmechanismus verwendet wird. Ich denke, dass Ihr Server mit Kerberos- und NTLM-Authentifizierung aktiviert ist. Von Fiddler können Sie leicht überprüfen, welche Authentifizierung verwendet wird. Überprüfen Sie die Kopfzeile der Antwort Ihres Browsers auf die Challenge 401 (die eine Anforderungsheader ist). Wenn das Autorisierung: NTLM + -Token enthält, ist es NTLM-Authentifizierung. Im Falle der Autorisierung: Verhandeln + Token sollte Kerberos sein. Hinweis NTLM hat mehr als eine 401 Herausforderungen. – Charith

28

Putting diese Informationen hier für Nutzen zukünftigen Leser.

  • 401 (Unauthorized) response header -> Anfrage Authentication Header

  • Hier sind mehrere WWW-Authenticate response headers. (Die vollständige Liste ist bei der IANA: HTTP Authentication Schemes.)

    • WWW-Authenticate: Basic -> Authorization: Basic + Token - Verwenden Sie für die Standardauthentifizierung
    • WWW-Authenticate: NTLM -> Authorization: NTLM + Token (2 Herausforderungen)
    • WWW-Authenticate: Negotiate - > Authorization: + Token Verhandeln - für die Kerberos-Authentifizierung verwendet
      • By the way: IANA hat diese angry remark about Negotiate: Dieses Authentifizierungsschema gegen beide HTTP-Semantik (die Verbindung -orientiert) und Syntax (Verwendung der Syntax inkompatibel mit der Header-Feld-Syntax WWW-Authenticate und Authorization).

können Sie die Authorization: Basic Header nur dann gesetzt, wenn Sie auch den WWW-Authenticate: Basic Header auf 401 Herausforderung haben.

Aber da Sie WWW-Authenticate: Negotiate haben, sollte dies für Kerberos-basierte Authentifizierung der Fall sein.

Verwandte Themen