it-swarm.com.de

Passen Sie den Autorisierungs-HTTP-Header an

Ich muss einen Client authentifizieren, wenn er eine Anfrage an eine API sendet. Der Client hat ein API-Token und ich dachte darüber nach, den Standard-Header Authorization zu verwenden, um das Token an den Server zu senden.

Normalerweise wird dieser Header für die Basic und Digest Authentifizierung verwendet. Ich weiß jedoch nicht, ob ich den Wert dieses Headers anpassen und ein benutzerdefiniertes Authentifizierungsschema verwenden darf, z.

Authorization: Token 1af538baa9045a84c0e889f672baf83ff24

Würden Sie das empfehlen oder nicht? Oder gibt es einen besseren Ansatz zum Senden des Tokens?

78
Thomas Watson

Sie können Ihre eigenen benutzerdefinierten Authentifizierungsschemata erstellen, die den Header Authorization: Verwenden. So funktioniert beispielsweise OAuth .

Wenn Server oder Proxys die Werte von Standard-Headern nicht verstehen, lassen sie diese in der Regel in Ruhe und ignorieren sie. Es werden eigene Header-Schlüssel erstellt , die häufig zu unerwarteten Ergebnissen führen. Viele Proxys entfernen Header mit Namen, die sie nicht erkennen.

Allerdings ist es möglicherweise eine bessere Idee, Cookies zum Übertragen des Tokens zu verwenden, als den Authorization: - Header, da Cookies explizit für benutzerdefinierte Werte entwickelt wurden, während die Spezifikation für HTTPs integriert ist auth-Methoden sagen nicht wirklich so oder so - wenn Sie genau sehen wollen, was es sagt, schauen Sie hier .

Der andere Punkt dabei ist, dass viele HTTP-Client-Bibliotheken Digest- und Basic-Authentifizierung unterstützen, aber das Leben möglicherweise erschweren, wenn Sie versuchen, einen Rohwert im Header-Feld festzulegen, wohingegen alle eine einfache Unterstützung für Cookies bieten und dies auch tun erlauben Sie mehr oder weniger jeden Wert in ihnen.

49
DaveRandom

Im Falle von CROSS Origin Anfrage lesen Sie dies:

Ich war mit dieser Situation konfrontiert und entschied mich zunächst für die Verwendung der Überschrift Authorization und entfernte sie später, nachdem ich das folgende Problem festgestellt hatte.

Authorization Header wird als benutzerdefinierter Header betrachtet. Wenn also eine domänenübergreifende Anfrage mit gesetztem Autorization -Header gestellt wird, sendet der Browser zuerst eine Preflight-Anfrage. Eine Preflight-Anfrage ist eine HTTP-Anfrage der OPTIONS-Methode. Diese Anfrage entfernt alle Parameter aus der Anfrage. Ihr Server muss mit dem Header Access-Control-Allow-Headers Antworten, der den Wert Ihres benutzerdefinierten Headers (Authorization Header) hat.

Für jede Anforderung, die der Client (Browser) sendet, wurde vom Browser eine zusätzliche HTTP-Anforderung (OPTIONEN) gesendet. Dies hat die Leistung meiner API verschlechtert. Sie sollten überprüfen, ob das Hinzufügen Ihre Leistung beeinträchtigt. Als Workaround sende ich Token in http-Parametern, von denen ich weiß, dass sie nicht die beste Methode sind, aber ich konnte keine Kompromisse bei der Leistung eingehen.

8
Abhishek Kumar

Dies ist ein bisschen veraltet, aber es kann andere geben, die nach Antworten auf die gleiche Frage suchen. Sie sollten überlegen, welche Schutzbereiche für Ihre APIs sinnvoll sind. Beispielsweise möchten Sie möglicherweise den Clientanwendungszugriff auf Ihre APIs identifizieren und authentifizieren, um deren Verwendung auf bekannte, registrierte Clientanwendungen zu beschränken. In diesem Fall können Sie das Authentifizierungsschema Basic mit der Client-ID als Benutzer-ID und dem gemeinsamen Client-Geheimnis als Kennwort verwenden. Sie benötigen keine proprietären Authentifizierungsschemata, um die von den Clients für jeden Schutzbereich zu verwendenden Schemata eindeutig zu identifizieren. Ich bevorzuge nur einen für jeden Schutzbereich, aber die HTTP-Standards erlauben sowohl mehrere Authentifizierungsschemata für jede WWW-Authentifizierungs-Header-Antwort als auch mehrere WWW-Authentifizierungs-Header in jeder Antwort. Dies ist für API-Clients verwirrend, welche Optionen verwendet werden sollen. Seien Sie konsistent und klar, dann werden Ihre APIs verwendet.

5
Steve Dearborn

Ich würde empfehlen, keine HTTP-Authentifizierung mit benutzerdefinierten Schemanamen zu verwenden. Wenn Sie das Gefühl haben, etwas Allgemeines zu verwenden, können Sie ein neues Schema definieren . Siehe http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p7-auth-latest.html#rfc.section.2. für Details.

2
Julian Reschke

Bitte versuchen Sie unten auf Briefträger: -

In der Kopfzeile Beispielarbeit für mich ..

Authorization: JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyIkX18iOnsic3RyaWN0TW9kZSI6dHJ1ZSwiZ2V0dGVycyI6e30sIndhc1BvcHVsYXRlZCI6ZmFsc2UsImFjdGl2ZVBhdGhzIjp7InBhdGhzIjp7InBhc3N3b3JkIjoiaW5pdCIsImVtYWlsIjoiaW5pdCIsIl9fdiI6ImluaXQiLCJfaWQiOiJpbml0In0sInN0YXRlcyI6eyJpZ25vcmUiOnt9LCJkZWZhdWx0Ijp7fSwiaW5pdCI6eyJfX3YiOnRydWUsInBhc3N3b3JkIjp0cnVlLCJlbWFpbCI6dHJ1ZSwiX2lkIjp0cnVlfSwibW9kaWZ5Ijp7fSwicmVxdWlyZSI6e319LCJzdGF0ZU5hbWVzIjpbInJlcXVpcmUiLCJtb2RpZnkiLCJpbml0IiwiZGVmYXVsdCIsImlnbm9yZSJdfSwiZW1pdHRlciI6eyJkb21haW4iOm51bGwsIl9ldmVudHMiOnt9LCJfZXZlbnRzQ291bnQiOjAsIl9tYXhMaXN0ZW5lcnMiOjB9fSwiaXNOZXciOmZhbHNlLCJfZG9jIjp7Il9fdiI6MCwicGFzc3dvcmQiOiIkMmEkMTAkdTAybWNnWHFjWVQvdE41MlkzZ2l3dVROd3ZMWW9ZTlFXejlUcThyaDIwR09IMlhHY3haZWUiLCJlbWFpbCI6Im1hZGFuLmRhbGUxQGdtYWlsLmNvbSIsIl9pZCI6IjU5MjEzYzYyYWM2ODZlMGMyNzI2MjgzMiJ9LCJfcHJlcyI6eyIkX19vcmlnaW5hbF9zYXZlIjpbbnVsbCxudWxsLG51bGxdLCIkX19vcmlnaW5hbF92YWxpZGF0ZSI6W251bGxdLCIkX19vcmlnaW5hbF9yZW1vdmUiOltudWxsXX0sIl9wb3N0cyI6eyIkX19vcmlnaW5hbF9zYXZlIjpbXSw iJF9fb3JpZ2luYWxfdmFsaWRhdGUiOltdLCIkX19vcmlnaW5hbF9yZW1vdmUiOltdfSwiaWF0IjoxNDk1MzUwNzA5LCJleHAiOjE0OTUzNjA3ODl9.BkyB0LjKB4FIsCtnM5FcpcBLvKed_j7rCCxZddwiYnU

0
Madan Dale