2009-07-21 11 views
0

Ich verwende XMLHttpRequest und Basic-Auth, um auf Anwendungsschnittstelle zugreifen. Das Passwort ist ein Ehrenzeichen und wird durch eine andere Anfrage generiert, so dass es nach einiger Zeit abläuft.XMLHttpRequest, grundlegende Authentifizierung und ablaufendes Passwort

Aber Browser (Firefox am wenigsten) weiterhin alte verwenden, fehlgeschlagen und Login-Popup anzeigen. Wenn ich Popup durch 403 für Anfragen mit X-Requested-By und falschem Passwort unterdrücken, versucht mozilla nie, neues Passwort zu verwenden (Firebug zeigt neues Passwort in der Anfrage an, der Server wird alt).

Problem kann durch Hinzufügen zufälliger 'Salz' zum Benutzernamen (und stripping es auf der Serverseite) umgangen werden, aber gibt es eine bessere Möglichkeit, XMLHttpRequest zu zwingen, verwenden Sie Passwort statt zwischengespeichert?

Antwort

0

401 Antworten enthalten eine "Authentifizierungsdomäne", die standardmäßig auf alle URLs auf dem Server verweist (siehe RFC 2617). Es wird erwartet, dass der Browser für jede Herausforderung derselben Domäne die gleichen Anmeldeinformationen bereitstellt.

Da Sie bereits ein ablaufendes Kennwort generieren, können Sie es einfach in ein Token umwandeln, das an jede Anforderung angehängt werden muss. Zum Beispiel ein SHA1-Hash des Benutzernamens, vielleicht mit einem Zeitstempel gesalzen. Ich gehe davon aus, dass Sie dies als Schlüssel auf dem Server verwenden, um die Daten des Benutzers abzurufen.

+0

Meinst du nicht 401 Antworten? – ymv

+0

Sie sind richtig - ich habe aktualisiert – kdgregory

Verwandte Themen