Ich bin derzeit auf der Suche nach einer Möglichkeit, eine REST-API mithilfe der tokenbasierten Authentifizierung zu sichern. Ich entwickle die API in Python mit Flask und habe die flask-Sicherheitserweiterung entdeckt, die viele interessante Funktionen zu haben scheint.
Eine der in der Dokumentation erwähnten Funktionen ist die Token-Authentifizierung.
Gemäß der Dokumentation:
Token-basierte Authentifizierung wird durch Abrufen der Benutzerberechtigung aktiviert Token durch Ausführen eines HTTP POST mit den Authentifizierungsdetails als JSON-Daten gegen den Authentifizierungsendpunkt. Ein erfolgreicher Anruf an Dieser Endpunkt gibt die Benutzer-ID und ihre Authentifizierung zurück Zeichen. Dieses Token kann in nachfolgenden Anforderungen für protected verwendet werden Ressourcen.
Ich bin jedoch immer noch etwas verwirrt darüber, wie man dieses Feature mit Hilfe von flask-security implementiert. Einige Online-Recherchen haben mich dazu gebracht, Dinge wie @auth_token_required zu verwenden, aber ich habe Probleme, alles zusammen zu stellen. Die Flasch-Sicherheitsdokumentation selbst ist nicht sehr hilfreich.
Wie kann ein Benutzer beispielsweise ein Authentifizierungstoken erhalten? Was sind die Authentifizierungsendpunkte?
Es wäre großartig, wenn Sie mich in die richtige Richtung führen könnten. Code Beispiele wären auch toll: -)
Endpunkt ist / login, Sie senden Ihre Anmeldeinformationen als json-Anfragetext:
%Vor%Damit dies jedoch funktioniert, müssen Sie die csrf-Tokens in Ihrer flask-App deaktivieren (danke Mandar Vaze):
%Vor%Dann führen Sie jede Anfrage mit dem Token in den HTTP-Headern durch:
%Vor%Oder als Abfragezeichenfolge:
%Vor%Client-Beispiel in Python 3:
%Vor%Eckiges Beispiel-Snippet, um das Token zu erhalten:
%Vor%Eckiges Beispiel-Snippet, um geschützte Seiten zu besuchen:
%Vor%Ich fand Flask-Security Token-basierte kein guter Kandidat für mein Projekt. Ich empfehle stattdessen, JWT-Token zu verwenden.
Die Probleme mit der tokenbasierten Authentifizierung von Flask-Security.
Schauen Sie sich JWT ( pyjwt oder an flask-jwt ) Token, es löst alle oben genannten Probleme und mehr.
Der Authentifizierungsendpunkt ist / login
Sehen Sie sich den Code von flash-security hier genauer an. views.py: _render_json ()
login () ruft _render_json auf, welches wiederum get_auth_token () aufruft - und das Authentifizierungs-Token zurückgibt.
Problem (für mich) ist es, dies zur Arbeit zu bringen. Für mich scheint request.json leer (daher funktioniert nicht )
%Vor%Hoffentlich hilft es Ihnen, sich ein wenig vorwärts zu bewegen.
Tags und Links restful-authentication python-3.x flask flask-security