
Teilen Sie:
Lorna ist eine Software-Ingenieurin mit einer unheilbaren Blogging-Sucht. Sie versucht, Worte und Code gleichermaßen zu bändigen.
Debuggen von JSON-Web-Tokens (JWTs)
Viele moderne Web-Applikationen, sowohl auf der Client- als auch auf der Server-Seite, verwenden JSON Web Tokens (JWTs) für die Authentifizierung, was ein ausgezeichneter Ansatz ist. Wenn jedoch etwas nicht funktioniert, kann es schwierig sein, die Gründe dafür herauszufinden.
Dieser Beitrag soll Ihnen einige Taktiken zum Verständnis und zur Behebung von Problemen mit JWTs vermitteln. Wenn Sie gerade erst anfangen, sehen Sie sich die Dokumentation zur Arbeit mit JWTs und unseren APIs zuerst.
Sieht Ihr JSON-Web-Token plausibel aus?
Manchmal ist das Problem so einfach wie die Frage, ob Sie überhaupt den richtigen Wert an die richtige Stelle übergeben haben, das Äquivalent zur Frage "Ist er eingesteckt?
Fügen Sie also ein wenig Debugging zu Ihrem Code hinzu, um die JWT an einer sichtbaren Stelle auszugeben, z. B. in Ihrem Fehlerprotokoll oder auf der Konsole.
Dann schauen Sie sich Folgendes an:
Sieht dies wie ein Token aus? Es sollte aus drei Sätzen von verstümmelt aussehenden alphanumerischen Zeichenfolgen bestehen (technisch gesehen, Groß- und Kleinbuchstaben, numerische Ziffern,
+und/sind erlaubt, wobei=zum Auffüllen verwendet), getrennt durch Punkte.Gibt es Leerzeichen um ihn herum, einschließlich eines Zeilenumbruchs am Ende? Lästige, fehlerhafte Leerzeichen können einige Tools stören.
Ist es überhaupt vorhanden? Ich habe mich bei einem Variablennamen vertippt und das Token ein paar Mal neu generiert, bevor ich merkte, dass das Problem bei mir liegt und nicht beim Token.
Wenn der Token die visuelle Inspektion besteht, müssen wir einige spezifischere Werkzeuge herausholen.
Prüfen Sie das JSON-Web-Token unter jwt.io
Es gibt ein ausgezeichnetes JWT-Debugging-Tool (Danke, Auth0!), das uns helfen kann, zu verstehen, wenn etwas nicht so läuft, wie wir es uns vorgestellt haben.

Fügen Sie Ihre JWT in das linke Fenster ein, und wenn sie analysiert wird, werden die Details der drei Abschnitte auf der rechten Seite angezeigt.
Der erste Abschnitt ist der Header, der den Typ und den verwendeten Algorithmus angibt. Für das Signieren von Vonage-API-Aufrufen ist dies normalerweise typ von JWT und alg von RS256 (die JWTs auf den Messages API signierten Webhooks sind HS256).
Der mittlere Abschnitt enthält die meisten der eigentlichen Daten. Hier gibt es einige erwartete Felder für Vonage-API-Aufrufe mit JWTs:
iatsteht für "issued at" und sollte ein UNIX-Zeitstempel seinexpist die "Verfallszeit" und ebenfalls ein UNIX-Zeitstempeljtisteht für "JWT ID" und sollte ein eindeutiger Bezeichner sein (Format nicht angegeben)application_idist für Vonage-API-Aufrufe erforderlich und muss mit dem privaten Schlüssel übereinstimmen, der zum Signieren des Tokens verwendet wird.
Sie sehen vielleicht auch ein sub Feld (die Client-SDKs verwenden dies) oder etwas namens nbf das den Zeitstempel angibt, zu dem das Token "Not Before" ist, was bedeutet, dass das Token bis zu diesem Zeitpunkt nicht gültig ist.
Der dritte und letzte Abschnitt im jwt.io-Debugger ist die Signatur. JWTs werden mit einem privaten Schlüssel erstellt, der nicht Teil der Nutzdaten ist.
Der private Schlüssel ist im Wesentlichen ein gemeinsames Geheimnis zwischen Ihnen und Vonage. Sie können überprüfen, ob die Signatur korrekt ist, indem Sie Ihren privaten Schlüssel in die Webschnittstelle in diesem Abschnitt eingeben.
Regenerieren Sie Ihr JWT
Manchmal ist das Problem, das wir für das Token halten, etwas ganz anderes! Hier sind einige Taktiken, die Sie ausprobieren können, wenn die ersten beiden Schritte nicht geholfen haben.
Versuchen Sie eine neue Anwendung
Eine neue Anwendung erstellen, neue Schlüssel generieren, sicherstellen, dass Sie die richtige Datei benannt haben private key-das sind alles Schritte, die eigentlich keinen Unterschied machen sollten, aber manchmal alles sind, was nötig ist. Das ist mein "einziger Trick" für JWT-Probleme, und vielleicht hilft er auch Ihnen?
Ein anderes JSON-Web-Token generieren
Versuchen Sie, ein Token zu erzeugen und es dann entweder in Ihrer Anwendung oder in einem rohen API-Aufruf von Ihrem bevorzugten HTTP-Client aus zu verwenden.
Sie können ein JWT mit dem Nexmo CLI-Werkzeugerzeugen, indem Sie Ihre Anwendungs-ID und Ihren privaten Schlüssel wie folgt verwenden:
nexmo jwt:generate path/to/private.key application_id=asdasdas-asdd-2344-2344-asdasdasd345Alternativ dazu gibt es auf unserem Entwicklerportal eine webbasierte Hilfe, mit der Sie einen JWT generieren können: https://developer.nexmo.com/jwt.
Fehlersuche ist eine Fähigkeit
Die Fehlersuche ist eine ganz eigene Angelegenheit, und ich hoffe, dass dieser Beitrag Ihnen dabei hilft, etwas Tolles zu bauen. Wenn Sie weitere Tipps haben, lassen Sie es uns wissen! Wir sind @VonageDev auf Twitter.