Flask werkzeug request.authorisation ist keine, aber Autorisierungs Header vorhanden

9

Ich gebe einige JSON-Daten an und füge einen Authorization -Header hinzu. Das Anforderungsobjekt verfügt jedoch nicht über die richtige Berechtigungseigenschaft. HTTP_AUTHORIZATION und headers zeigen beide die richtigen Autorisierungsdetails.

%Vor%     
Patrick Yan 24.12.2014, 00:52
quelle

3 Antworten

8

Ihr Berechtigungsheader ('Authorization', 'testkey:') muss Base64-codiert sein und Basic enthalten.

in Python:

%Vor%

Setzen Sie in javascript Ihre Kopfzeile mit btoa :

%Vor%

In Ihrem Fall wird dies dazu führen, dass der Header als:

erscheint

('Authorization', 'Basic dGVzdGtleTo=')

    
Riley 14.05.2015, 22:56
quelle
9

Das Attribut request.authorization wird nur gesetzt, wenn Sie eine gültige Basisberechtigung oder Digest Authorization Kopfzeile; Der Header Authorization hat bestimmte Formate, wobei das erste Wort im Header den Typ festlegt und das Attribut nur diese beiden spezifischen Typen behandelt (gekennzeichnet durch die Schlüsselwörter Basic oder Digest type).

Aus der AuthorizationMixin.authorization Attribut-Dokumentation

  

Das Authorization -Objekt in analysierter Form.

im Anschluss an die Authorization Objektdokumentation :

  

Stellt einen Autorisierungsheader dar, der vom Client gesendet wird. Sie sollten dieses Objekt nicht selbst erstellen, sondern es verwenden, wenn es von der Funktion parse_authorization_header zurückgegeben wird.

Das ist dokumentiert als :

  

Analysieren Sie einen HTTP basic / Digest Autorisierungs-Header , der vom Webbrowser übertragen wird. Der Rückgabewert ist entweder None , wenn der Header ungültig oder nicht angegeben war, andernfalls ein Authorization -Objekt.

Kühne Betonung meiner.

Ihre Kopfzeile ist keine solche gültige Kopfzeile; Es hat nicht den Typ Basic oder Digest type. Wenn Sie einen solchen Header haben, gibt die Funktion etwas anderes als None :

zurück %Vor%

Ich habe dort einen Basic type-Header verwendet, wobei der Rest des Header-Wertes ein Base-64-codiertes Benutzername- und Passwort-Paar ist, das durch einen : Doppelpunkt getrennt ist.

Wenn Sie Ihr eigenes Authentifizierungsschema implementieren möchten, greifen Sie einfach auf die Kopfzeile selbst zu und parsen Sie sie manuell.

%Vor%     
Martijn Pieters 25.12.2014 00:22
quelle
2

Wenn Sie Apache + WSGI verwenden, vergessen Sie nicht die Direktive WSGIPassAuthorization On .

    
caffeinate_me 10.03.2017 15:54
quelle

Tags und Links