Skip to content

fh-swf-hgi/jwt-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Binder

JSON Web Token (JWT) Demo

JWT mit Python erzeugen

  1. Um in Python mit JWTs zu experimentieren, kann man die Bibliothek pyjwt verwenden. Für die kryptographischen Funktionen wird cryptography benötigt.
!pip install pyjwt cryptography
  1. Die Claims werden im Dictionary payload abgelegt. Der Secret key ist im ersten Beispiel eine zufällige Zeichenfolge.

Über die Funktion jwt.decode(payload, secret_key, algorithms='HS256') wird das Token mit HMAC SHA-2 signniert. Der Nachteil dieser Methode ist, dass sowohl die signierende als auch die verifizierende Seite das Secret kennen muss.

import jwt
import time
payload = {'user_id': 12345, 'exp': time.time()+60*60}
secret_key = '314254353 3f<fxf<7f697<df 7d89sf798a7sf sdfff'
token = jwt.encode(payload, secret_key, algorithm='HS256')
print(token)
  1. Um das oben beschriebene Problem zu umgehen, kann ein asymmetrisches Verschlüsselungsverfahren wie RSA verwendet werden. Dazu wird zunächst eine RSA-Schlüsselpaar, z.B. mit ssh-keygen -t rsa -b 4096 erzeugt und im Python Code importiert.
private_key = open('dummy_key').read()
public_key = open('dummy_key.pub').read()
  1. Das Token berechnet man dann aus den Claims und dem Privaten Schlüssel mit dem Algorithmus RS256.
token = jwt.encode(payload, private_key, algorithm='RS256').decode('utf-8')
  1. Zum Verifizieren des Tokens genügt dann der Public Key.
jwt.decode(token, public_key, algorithms=['RS256'])

Online JWT Debugger

Auf jwt.io findet man ein kleines Web-Tool mit dem binäre JWT Tokens generiert und verifiziert werden können. ajwt.io

[1] https://blog.miguelgrinberg.com/post/json-web-tokens-with-public-key-signatures

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published