Ich bin dabei, die Token-Authentifizierung in meiner API mithilfe von Django Rest Framework zu implementieren.
Aber ich bin mir nicht sicher, ob ich
Im Gegensatz zum integrierten TokenAuthentication-Schema, JWT Authentication Es muss keine Datenbank zum Validieren eines Tokens verwendet werden.
Gibt es noch andere Unterschiede, Vorteile oder Nachteile?
Hinweis: Der Zugriff auf die API erfolgt über die Website (mit angularjs) und über eine mobile App
Die Verwendung von JWT-Tokens hat unabhängig von der Plattform viele Vorteile. JWT-Token base64
kodieren alle Benutzeransprüche in ihrem Körper und können auf dem Client sicher zu einem statusbehafteten Objekt dekodiert werden. Dies ist im Vergleich zu alternativen opaken Tokens, die der Client-App keinen Nutzen bieten, von großem Vorteil. Bei der Anmeldung haben Sie sofort atomare Daten im Client ohne zusätzliche Roundtrips zur API, um nach Benutzerinformationen zu suchen.
JWT-Tokens sind zustandslos: Es ist nicht notwendig, die Serverseite zu speichern oder zu verfolgen, die horizontal auf vielen Servern skalierbar ist. Sie sind sicher, da der private Signaturschlüssel, der verwendet wurde, serverseitig gespeichert ist. Eingehende API-Aufrufe, die sie enthalten, werden einfach mit dem privaten Schlüssel validiert, um sicherzustellen, dass sie von Ihrer Autorisierungs-API ausgegeben wurden.
JWT-Token funktionieren gut in Angular, React und jedem anderen Client-Framework. Da es sich um JSON handelt, können Sie base64
im Client decodieren und Client-UI-Elemente direkt an Ihre Ansprüche binden - jemand mit einem Admin-Anspruch kann ein Admin-Menü sehen und ein Benutzer ohne diesen Anspruch wird nie wissen, ob das Menü existiert richtig.
Abgesehen davon verhält sich ein JWT-Token immer noch wie jedes Bearer-Token:
Authorization
header Zusammenfassend haben Sie weniger N + 1-Fahrten zwischen Ihrem Client und Server und weniger Aufwand für die Skalierung, wenn Sie JWT-Token implementieren.
JWT:
Any
client, der es hat, kann nach Sachen fragen (ähnlich wie Geld beim Kauf von Sachen) JWT hat ein Ablaufdatum und bis zu diesem Zeitpunkt bleibt es gültig. Dies kann unerwünscht sein, wenn Sie einen Benutzer beim Zurücksetzen des Kennworts abmelden oder erzwingen müssen.
Eine Token-Blacklist kann verwendet werden, um die obigen Probleme zu beheben. Dadurch wird das permanente oder In-Memory-Tracking wieder eingeführt, das JWT ursprünglich vermeiden wollte. Das Tracking wird jedoch NUR auf ausgewählten Schlüsseln ausgeführt, während die Verfolgung des Basis-Tokens für alle Benutzer gilt.
JWT kann von jedem entschlüsselt werden, der es hat. Daher muss man auf die im Token gepackten Informationen achten. Das Basic Auth Token hingegen ist nur ein einfacher Hash, der nur als Referenz auf einen Benutzer angesehen werden kann.
Beim Caching und anderen Leistungsverbesserungen müssen Sie sich keine Gedanken über den Overhead machen, sondern müssen sich um den Komfort und die Zukunftssicherheit des Datenflusses kümmern.
Die volle Kontrolle über Authentifizierung, Autorisierung und Ungültigmachung zu haben, ist eine gute Sache, egal ob JWT + Blacklist oder Basic Token Auth verwendet wird.
Daher ist das Basic Auth Token may
besser, wenn der Ablauf an die Bedürfnisse angepasst wird.