Bestimmen von Web http-Authentifizierungsmethoden

8

Wie ermitteln Sie, ob ein REST-Webservice Basic, Kerberos, NTLM oder eine der vielen anderen Authentifizierungsmethoden verwendet?

    
Seph 11.08.2010, 23:47
quelle

3 Antworten

8

Wenn Sie eine nicht authentifizierte Anfrage senden, muss der Dienst mit einem "HTTP / 1.1 401 Unauthorized" antworten und die Antwort enthält eine WWW-Authenticate - Kopfzeile, die angibt, welches Authentifizierungsschema erwartet wird ( Basic , Digest ) Sicherheitsbereich und andere spezifische Werte (wie Digets 'nonce). Also wenn der Server antwortet mit:

%Vor%

möchte eine Digest-Authentifizierung. Wenn die Antwort wie folgt aussieht:

%Vor%

Dann möchte es eine Standard-Authentifizierung. Einige (schlecht) implementierte Server / Sites behandeln das Basic nicht korrekt und reagieren direkt mit Forbidden, anstatt zuerst zu fordern.

NTLM ist ähnlich wie der Server antwortet mit einem 401 und einem WWW-Authenticate-Header mit dem Wert NTLM , aber es gibt keine offizielle öffentliche Spezifikation für sie, da Microsoft proprietär ist. Es gibt verschiedene umgekehrte technische Beschreibungen.

Leider enthält REST keine Dienstbeschreibung des WSDL-Stils, um das verwendete Authentifizierungsschema a priori zu finden.

    
Remus Rusanu 11.08.2010, 23:57
quelle
4

Sie senden ihm eine Anfrage, erhalten vermutlich einen HTTP 401-Code und schauen sich den WWW-Authenticate -Header an, der (pro RFC 2616 ) die Antwort MUST include. Wenn Sie statt dessen einen 403 oder irgendeinen anderen seltsamen Status oder einen fehlenden Header WWW-Authenticate erhalten, fluchen Sie bei Websiteautoren, die nicht dem HTTP-RFC folgen, und fangen an, den Verkehr zu schnüffeln, um zu versuchen, das nicht standardmäßige Chaos nachzubilden. Habe diese Zeit gemacht; -).

    
Alex Martelli 11.08.2010 23:53
quelle
1

Wenn es sich um ein Blackbox-Szenario handelt, verbinde ich mich normalerweise mit Fiddler und überprüfe den tatsächlichen Traffic.

    
kbrimington 11.08.2010 23:49
quelle

Tags und Links