Frage Können Sie in URL-Parametern Benutzer / Ausweis für die HTTP-Basisauthentifizierung übergeben?


Ich glaube, das ist nicht möglich, aber jemand, den ich kenne, bestand darauf, dass es funktioniert. Ich weiß nicht einmal, welche Parameter zu versuchen sind, und ich habe das nirgendwo dokumentiert gefunden.

Ich habe es versucht http://myserver.com/~user=username&password=meinpasswort aber es funktioniert nicht.

Können Sie bestätigen, dass es tatsächlich nicht möglich ist, den Benutzer / Ausweis über HTTP-Parameter (GET oder POST) zu übergeben?


124
2018-03-21 11:16


Ursprung


Benutzer: pass@example.com - Smudge
@sam - was? Wie würde die vollständige URL aussehen? - ripper234
Alles in der Spezifikation ietf.org/rfc/rfc1738.txt (3.1) - Smudge
@sam - Tut mir leid, ich habe es gerade aus irgendeinem Grund versäumt, deinen Kommentar zu analysieren. - ripper234


Antworten:


Es ist in der Tat nicht möglich, den Benutzernamen und das Passwort über Abfrageparameter in der Standard-HTTP-Authentifizierung zu übergeben. Stattdessen verwenden Sie ein spezielles URL-Format wie folgt: http://username:password@example.com/ - Dies sendet die Anmeldeinformationen im Standard-HTTP-Header "Authorization".

Es ist möglich, dass jeder, mit dem Sie sprachen, über ein benutzerdefiniertes Modul oder einen benutzerdefinierten Code nachdachte, der die Abfrageparameter betrachtete und die Anmeldeinformationen verifizierte. Dies ist keine Standard-HTTP-Authentifizierung, obwohl es eine anwendungsspezifische Sache ist.


167
2018-03-21 11:38



Danke, das ist genau das, was ich gesucht habe ... es ist nicht entscheidend, dass es GET-Parameter sind, nur dass ich es in die URL einbauen kann. - ripper234
FYI, die http://username:password@example.com Format wird nicht mehr von beiden unterstützt IE oder Chrom, wäre nicht überrascht, wenn andere dem Beispiel folgen würden, wenn sie es nicht schon getan hätten. - T.J. Crowder
Wirklich funktioniert in Chrome gut. Nur IE ist ein verwöhnter Balg. - Damien Overeem ツ
@DamenOvereem welche Version von Chrome bist du? Ich bin auf Mac OS X 37 und es scheint nicht für mich zu arbeiten - Chris DaMour
Seitdem habe ich erfahren, dass Chrome für einige Zeit deaktiviert war, aber später wieder aktiviert wurde. Ich habe auch gelernt, dass Safari Phishing-Fehler auslösen wird, wenn Sie auf diese Art von Links laufen. Grundsätzlich ist die Zeit der URL-basierten http-Authentifizierung vorbei .. - Damien Overeem ツ


http: // Benutzername: Passwort@Beispiel.com funktioniert für FireFox, Chrome, Safari aber nicht für IE.

Microsoft Knowledge Base


16
2018-01-23 10:50



Diese Funktion wurde aus Chrome 19+ entfernt. Sehen code.google.com/p/chromium/issues/detail?id=123150 - Moshe Katz
Nachdem ich diesen Fehlerbericht gelesen hatte, wurde er wieder in Chrome 20 aufgenommen. Sicherlich würde ich erwarten, dass sich viele darüber beklagen würden, wenn es nicht gewesen wäre. - womble♦
Ich habe es jetzt für den Internet Explorer angefordert: connect.microsoft.com/IE/feedback/details/873575/.... Etwas anderes Anwendungsbeispiel, aber das gleiche Problem;) - SimonSimCity
@Diago wenn das Passwort '@' enthält, funktioniert es nicht. es gibt fatale Fehler, kann mir jemand sagen, wie wir Benutzername und Passwort sofort geben können - Ashish Jain
@AshishJain - Ich würde versuchen, zu entkommen @ im Passwort als %40. (Ich weiß nicht, ob das funktioniert, und es könnte von der Server- oder Browser / Server-Kombination abhängen.) - David Moles


Das Übergeben von Standardauthentifizierungsparametern in URL wird nicht empfohlen

Zu diesem Zweck gibt es ein Autorisierungs-Header-Feld, das Sie hier überprüfen können: http-Header-Liste

Wie man es benutzt, ist hier geschrieben: Basiszugriffsauthentifizierung

Dort können Sie auch lesen, dass, obwohl es immer noch von einigen Browsern unterstützt wird, die vorgeschlagene Lösung zum Hinzufügen der Anmeldeinformationen für die Basisautorisierung in der URL nicht empfohlen wird.

Lesen Sie auch Kapitel 4.1 in RFC 2617 - HTTP-Authentifizierung Weitere Informationen dazu, warum Sie die Standardauthentifizierung NICHT verwenden sollten.


Authentifizierungsparameter in der Abfragezeichenfolge übergeben

Wenn Sie OAuth oder andere Authentifizierungsdienste verwenden, können Sie Ihr Zugriffstoken häufig auch in einer Abfragezeichenfolge anstatt in einem Autorisierungsheader senden.

GET https://www.example.com/api/v1/users/1?access_token=1234567890abcdefghijklmnopqrstuvwxyzABCD

14
2017-09-24 07:55



Und wie geht man bei der Codierung eines Autorisierungsheaders in eine URL vor? - womble♦
Ist das nicht die Form, die du angegeben hast, jetzt veraltet? - womble♦
Die Frage, die Sie mit "Es gibt ein Autorisierungsheaderfeld für diesen Zweck" beantwortet hat, fragte, wie Authentifizierungsparameter eingegeben werden können in die URL. Wenn Sie HTTP-Header-Felder nicht in eine URL codieren können (was nicht möglich ist), ist Ihre Antwort keine Frage. - womble♦
Können Sie anführen, wo im URI-Standard angegeben wird, dass die Übergabe von grundlegenden Authentifizierungsparametern in URI veraltet ist? RFC 2396 sagt nur, dass es "NICHT EMPFOHLEN" ist, da Authentifizierungsdetails im Klartext in vielen Fällen keine gute Idee sind (der ich zustimme), während RFC 7235 nichts erwähnt. Nirgendwo in den Spezifikationen, die ich suchen kann, heißt es, dass es veraltet ist. - Lie Ryan
@Wilt: Ich muss mich entschuldigen, Sie sind in der Tat richtig. Ihr Hinweis, dass die Spezifikation "geändert" wurde, veranlasste mich, weiter zu untersuchen (ein RFC wird nie geändert, sobald er veröffentlicht / nummeriert ist). Ich habe gerade festgestellt, dass RFC 2396 tatsächlich durch ersetzt wurde RFC 3986, die ich vorher nicht finden konnte. RFC 3986 erwähnt die Vernachlässigung von Benutzername: Passwort-Syntax: Use of the format "user:password" in the userinfo field is deprecated. - Lie Ryan


Es ist (offensichtlich) möglich, eine beliebige Zeichenfolge in den GET-Parametern zu senden, obwohl es nicht empfohlen wird, Login und Passwort zu senden, da sie es gut sichtbar machen können, insbesondere wenn es sich nicht um eine AJAX-Anfrage handelt.

Sie müssen dann jedoch die Server-Seite codieren, um den Benutzernamen und das Passwort zu extrahieren und dann zu validieren und zu verwenden, wie auch immer es benötigt wird.


0
2017-09-11 08:22