Internet Explorer 11 ersetzt Authorization-header

Was würde dazu führen, dass Internet Explorer zu ersetzen, um die HTTP-header

Authorization : Bearer <server-provided-token>

mit

Authorization : Negotiate <some token>

wenn Sie einen AJAX-request?

Details

In Internet Explorer, einige AJAX-requests, die konfiguriert sind, enthalten die header Authorization: Bearer ... gesendet werden, die von Internet Explorer mit dem header Authorization: Negotiate ... statt.

Beispielsweise Fiddler zeigt, dass die ersten zwei von drei Anfragen enthalten die Authorization : Bearer... header, während das Dritte plötzlich enthält die Authorization : Negotiate... header. Die ersten beiden Anfragen sind erfolgreich, und die Dritte schlägt fehl, da der Antrag nicht ordnungsgemäß authentifiziert.

Alle Anfragen sind konstruiert unter Verwendung der gleichen client-seitigen code, und werden einer nach dem anderen (innerhalb der Zeitspanne von einer Sekunde). Ich habe überprüft, dass die Authorization header korrekt enthält die Bearer token in allen drei Fällen bis zu dem Punkt der Anfrage an den browser.

Auch, ich bin nicht zu sehen, das gleiche Verhalten in Chrome, es ist nur, auftreten im IE.

Anfrage 1

BEKOMMEN http://localhost/myapp/api/User HTTP/1.1 
Akzeptieren: application/json, text/plain, */* 
Authorization: Bearer oEXS5IBu9huepzW6jfh-POMA18AUA8yWZsPfBPZuFf_JJxq-DKIt0JDyPXSiGpmV_cpT8FlL3D1DN-Tv5ZbT73MTuBOd5y75-bsx9fZvOeJgg04JcO0cUajdCH2h5QlMP8tnwgtphg-TR9FxyPk3Kw6bQ6tQCOkOwIG_FmEJpP89yrosoyjocfraoz7m4pvcik9f9qtpgxmwwxb2ehdtkls44witf_ym_rpm5c47opcvmvtpz30kwoepi6fhucl3qhaup-v9uypv2e48TyPHUwLYmNFxyafMhBx4Tkovnrcsdlhzihmsjmq0v9a2vw70 
Referer: http://localhost/client/login.html 
Accept-Language: en-US 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko 
Host: localhost 
DNT: 1 
Connection: Keep-Alive 

Anfrage 2

POST http://localhost/myapp/api/Permissions HTTP/1.1 
Referer: http://localhost/client/#/Dashboard 
Content-Type: application/json 
Authorization: Bearer oEXS5IBu9huepzW6jfh-POMA18AUA8yWZsPfBPZuFf_JJxq-DKIt0JDyPXSiGpmV_cpT8FlL3D1DN-Tv5ZbT73MTuBOd5y75-bsx9fZvOeJgg04JcO0cUajdCH2h5QlMP8tnwgtphg-TR9FxyPk3Kw6bQ6tQCOkOwIG_FmEJpP89yrosoyjocfraoz7m4pvcik9f9qtpgxmwwxb2ehdtkls44witf_ym_rpm5c47opcvmvtpz30kwoepi6fhucl3qhaup-v9uypv2e48TyPHUwLYmNFxyafMhBx4Tkovnrcsdlhzihmsjmq0v9a2vw70 
Akzeptieren: application/json, text/plain, */* 
Accept-Language: en-US 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko 
Host: localhost 
Content-Length: 1419 
DNT: 1 
Connection: Keep-Alive 
Pragma: no-cache 

<Post-Daten Entfernt> 

Anfrage 3

BEKOMMEN http://localhost/myapp/api/UserPreferences/Dashboard HTTP/1.1 
Referer: http://localhost/client/#/Dashboard 
Content-Type: application/json 
Authorization: Negotiate YHsGBisGAQUFAqBxMG+gMDAuBgorBgEEAYI3AgIKBgkqhkiC9xIbagigcsqgsib3egecagykkwybbagcnwichqi7bdlovexnu1nqaaeaaacxsgjibgagadmaaaalaasakaaaaaybsr0aaaapvk1ervzftlytu1jtq0vssvm= 
Akzeptieren: application/json, text/plain, */* 
Accept-Language: en-US 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko 
Connection: Keep-Alive 
DNT: 1 
Host: localhost 

Die Anforderungen werden über die AngularJS $http service und das back-end ASP.NET Web-API in IIS gehostet.

  • Hi shrichards - hast du jemals herausfinden? Ich zu sein scheinen Begegnung mit dem gleichen Problem mit dem IE 11.
  • Ich war nie in der Lage, um zu bestimmen, die Ursache des Problems. Ich arbeitete, um das problem durch das erstellen einer separaten Dienst mit der einzigen Verantwortung der Ausgabe von Token. In IIS das token-Dienst so konfiguriert wurde, dass die Unterstützung sowohl von Windows als auch die Anonyme Authentifizierung. Der Dienst, der verwendet Token-auth war dann so konfiguriert, verwenden Sie nur die Anonyme Authentifizierung in IIS (als auth verarbeitet wurde, die über den Token in der middleware). Dies hielt IE aus versucht werden, um eine integrierte auth mit IIS, wenn die gesicherten Dienst zugegriffen wurde.
  • Würden Sie bitte ein detailliertes Beispiel, wie Sie diesen service, der in github oder pastebin). Ich verlor mehr als zwei Wochen mit diesem problem und immer noch nicht finden können, ein work-around. Vielen Dank im Voraus.
  • Martin - ich hatte bereits das gleiche setup, dass shrichards beschreibt. Ich folgte bitoftech.net/2014/09/24/..., um dies einzurichten. Ich war immer noch auftreten dieses Problems für einige Anforderungen, die der client machen (siehe meinen verlinkten Frage).
  • Um ein besseres feedback zu diesem Problem wäre es hilfreich zu wissen, wie der Header werden Hinzugefügt.
  • Ich sehe das auch, und ich bin auf der Suche nach einer guten Lösung. Nach diesem thread und werde, wenn ich eine Lösung finde

InformationsquelleAutor shrichards | 2015-02-19
Schreibe einen Kommentar