2016-05-22 4 views
2

Ich habe eine Frage bezüglich der auth-scheme. Ich stolpere über JSON Web-Token und einer der offiziellen Seite:Zweck Auth-Schema in HTTP-Autorisierungskopf

https://jwt.io/introduction/

Sie verwenden

Authorization: Bearer <token> 

In der Vergangenheit, ich bin vertraut mit dem Authorization: JWT <token> und hatte davon aus, dass bis heute richtig war, Ich habe die offizielle JWT Webseite gelesen und stattdessen Bearer <token> benutzt.

Ich teste die Rails gem klopft https://github.com/nsarno/knock und mit dieser Bibliothek, konnte ich eine Postman Anfrage an meinen Rails-API mit zufälligem Auth-Schema machen:

example 1

Ich konnte sogar loswerden vollständig von dem auth-Schema:

example 2

Wenn ich meine JWT Token aus dem Authorization-Header entfernen, jedoch gibt es 401 Unauthorized Antwort als e Ich weiß, dass es funktioniert ...

example 3

So begann ich ... zu denken, ist es ein Zweck der Auth-Schema?

Darf eine Bibliothek oder ein Webserver annehmen, dass die korrekte Verwendung des Authentifizierungsschemas im Berechtigungsheader gewahrt wird?

Ich kam in dieser Stackoverflow Post in meiner Suche nach Antwort:

Custom HTTP Authorization Header

es das offizielle Format gezeigt ist:

credentials = auth-scheme #auth-param 

Das gegebene Beispiel war noch bizarrer:

Authorization: FIRE-TOKEN apikey="0PN5J17HBGZHT7JJ3X82", hash="frJIUN8DYpKDtOLCwo//yllqDzg=" 

Ich weiß nicht, ob dies als qualifiziert eine Programmierfrage. Ich kann blind einer Bibliothek von Drittanbietern folgen.

Was ist der Zweck des Auth-Schemas?

Ich bin kein Kryptographie/Computer-Sicherheitsexperte.

Vielleicht kann jemand etwas Licht auf das Problem werfen (oder vielleicht kein Problem?)?

Antwort

1

Das Autorisierungsschema ist nur ein Hinweis für den Server, welche Art von Anmeldeinformationen folgen.Ein Client kann basic Schema

Authorization: Basic <base64(username:password)> 

Oder bearer Schema

Authorization: Bearer <base64(JWT)> 

Oder die Hawk Schema

Authorization: Hawk id="...", ts="...", nonce="...", ext="...", mac="..." 

oder irgendein anderes Schema verwenden Sie es mit dem Server vereinbaren können.

+0

Ja, Auth-Schema ist es, dem Server zu sagen, was das folgende Token ist, das ist ziemlich offensichtlich. Die wichtigere Frage ist, ob ein Server es erzwingen sollte? – Zhang

+1

@Zhang Wenn der Server nur JWT-Tokens als Autorisierung akzeptiert, kann es verzeihend sein und den Auth-Schema-Bezeichner ignorieren. Wenn der Server jedoch mehrere Authentifizierungsschemas unterstützt, benötigt er die Kennung, um zu erkennen, was darauf folgt. – MvdD

+0

Klingt sinnvoll :) Ich denke mein Anliegen ist, ob es sich in Zukunft als Sicherheitsproblem darstellt, wenn der Server das Authentifizierungsschema nicht mit empfangenem Token durchsetzt. – Zhang