Last active
August 31, 2021 13:40
-
-
Save n2o/77a0683207e1d443ab17bc282d1916bd to your computer and use it in GitHub Desktop.
Erzeuge ein Schlüsselpaar, erstelle einen JWT, signiere ihn und decodiere ihn wieder
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Vorher: pip install jwt[crypto] | |
import jwt | |
# Hier ein Beispiel mit einem Testtoken, er wurde mit folgenden Befehlen erstellt: | |
# | |
# ssh-keygen -t rsa -b 4096 -m PEM -f jwtRS256.key | |
# openssl rsa -in jwtRS256.key -pubout -outform PEM -out jwtRS256.key.pub | |
testing_private_key = """ | |
-----BEGIN RSA PRIVATE KEY----- | |
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 | |
-----END RSA PRIVATE KEY----- | |
""" | |
testing_public_key = """ | |
-----BEGIN PUBLIC KEY----- | |
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4eCM/zsm76es6olZM0vq | |
tZ6B3FroMCHqkDDGiEJx5o9EGkjxQMYDsifD2Wa/g9qSi52VMfj+gG/OC5BryCY4 | |
MHrY+o3FU4rnw4yRnuTWeP/uy9TI6r0LQm3yc4nbZasZ8tE4Nl3URYm0s4ge9zmT | |
LqAy2CsjcnphS8geqaLPewwIcRIL9n61MvQ53iJX8gWBweN3BlaS0xqdGuOtLbb8 | |
Hg2LZI0lTYqD1bgJczUvgbPWFu/srUEQ5s6FW/iGBqM7OP0nemID5SNnSzhX+JMo | |
hOksXujixSXwWskM3ri1gP2dncIwHkNm8tqsD4OeuG6VSHStDXo0Ix8o4SNvE/Xg | |
pu8/oHwSGhAYMjA/sUM0dvPT5o3maeZ1ID6AlY2lHpgJ4+R0LQ6+17FokmWZiaXa | |
OGBSZu6xQ0SHV7mIFg4LXQdcys4T2ww6Ixn2D2JQW7yYvEwhVwyFrHedTbIs+Fsa | |
9H43p/kQK5mtWKT/dO/cviMToDL+nX9df7buv7gIvZ9zRP4hmzGG3gt3VBCFWucD | |
b73Oy67UqbH8Eafe7HW2RTw00AhnH6WYgQhNlhCR4HPkDgO6LQvBIDCz1a25HRtb | |
Aba/vk5ZklXgsGU0kaGr6KyYwjBUZnpX4Ai/lgeR9pFQV0m436VqpLlACh3jkArK | |
3OzMDb64k8KDPW9m4Ygxy5kCAwEAAQ== | |
-----END PUBLIC KEY----- | |
""" | |
testing_token = jwt.encode({"some": "payload"}, testing_private_key, algorithm="RS256") | |
print(f"Erzeugter JWT: {testing_token}") | |
# Erzeugter JWT: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzb21lIjoicGF5bG9hZCJ9.tTsMeRzPet_7KaZ-sZ6sE6rNvCbZROCCkgUChOHhCcrrDf1LM9szniCz4_WY_lCpwfoa6JOwIedZveyZiYG1Z0yMLeMZh8zKSwUUnRZxL0_NVE_uaPUVH5famkeV4tGRpAQJ5jpwRZ-JCxRyO_YybrYMDTZ8fB8kYvhvGNKy6oT3GiiJfMDu2Qg8rvB_UaU1eIl7AyQKPtzKdoINpt59zVfPFoN_QBag4HoGOxVQcEGzVKNPl1zjciWGTARF6ggE57pZXJaavlrS7CdOxnrVNxr-EoMjLpLbw1RoKUoMMyIcvkoD1qhIJlkX4-31fgShKXl-KnY9P_9eSGturzau3DwedZe-okRAsxQuDFwrPmesOiYy7dY8VnGxvAaQDg_8JA83dfb1_lKV4NuJuXHevKFdLA8Gu-hmIvv6lzj3SK7G-N2PvyrXLQzg25xdqeMYet1qE3KFN8aU8gI0EClq-mX65efP-On9Y-iO6ByR691DtwiIP9308uoGqzWfJrA1JS0f3kMt_3pQcK1vmBz5OMYad5SIf5xUR3EIoxmni8zbSpuUT0npw0XWIFUM3BBPv0Z-LaYs0zIlA9BGNbbO1VrBkfifIW4oYsgIVeWm6WJFWyQRkp2Oi6hpzOmWB60V3SzNFBwIz0tI7Mjtqsl9hcTzcZMDRP9a_hy9he8_hpE | |
payload = jwt.decode(testing_token, testing_public_key, algorithms=["RS256"]) | |
print(f"Value: {payload}") | |
# Value: {'some': 'payload'} | |
# Visualisiere JWT: https://jwt.io/#debugger-io?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzb21lIjoicGF5bG9hZCJ9.tTsMeRzPet_7KaZ-sZ6sE6rNvCbZROCCkgUChOHhCcrrDf1LM9szniCz4_WY_lCpwfoa6JOwIedZveyZiYG1Z0yMLeMZh8zKSwUUnRZxL0_NVE_uaPUVH5famkeV4tGRpAQJ5jpwRZ-JCxRyO_YybrYMDTZ8fB8kYvhvGNKy6oT3GiiJfMDu2Qg8rvB_UaU1eIl7AyQKPtzKdoINpt59zVfPFoN_QBag4HoGOxVQcEGzVKNPl1zjciWGTARF6ggE57pZXJaavlrS7CdOxnrVNxr-EoMjLpLbw1RoKUoMMyIcvkoD1qhIJlkX4-31fgShKXl-KnY9P_9eSGturzau3DwedZe-okRAsxQuDFwrPmesOiYy7dY8VnGxvAaQDg_8JA83dfb1_lKV4NuJuXHevKFdLA8Gu-hmIvv6lzj3SK7G-N2PvyrXLQzg25xdqeMYet1qE3KFN8aU8gI0EClq-mX65efP-On9Y-iO6ByR691DtwiIP9308uoGqzWfJrA1JS0f3kMt_3pQcK1vmBz5OMYad5SIf5xUR3EIoxmni8zbSpuUT0npw0XWIFUM3BBPv0Z-LaYs0zIlA9BGNbbO1VrBkfifIW4oYsgIVeWm6WJFWyQRkp2Oi6hpzOmWB60V3SzNFBwIz0tI7Mjtqsl9hcTzcZMDRP9a_hy9he8_hpE&publicKey=-----BEGIN%20PUBLIC%20KEY-----%0AMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4eCM%2Fzsm76es6olZM0vq%0AtZ6B3FroMCHqkDDGiEJx5o9EGkjxQMYDsifD2Wa%2Fg9qSi52VMfj%2BgG%2FOC5BryCY4%0AMHrY%2Bo3FU4rnw4yRnuTWeP%2Fuy9TI6r0LQm3yc4nbZasZ8tE4Nl3URYm0s4ge9zmT%0ALqAy2CsjcnphS8geqaLPewwIcRIL9n61MvQ53iJX8gWBweN3BlaS0xqdGuOtLbb8%0AHg2LZI0lTYqD1bgJczUvgbPWFu%2FsrUEQ5s6FW%2FiGBqM7OP0nemID5SNnSzhX%2BJMo%0AhOksXujixSXwWskM3ri1gP2dncIwHkNm8tqsD4OeuG6VSHStDXo0Ix8o4SNvE%2FXg%0Apu8%2FoHwSGhAYMjA%2FsUM0dvPT5o3maeZ1ID6AlY2lHpgJ4%2BR0LQ6%2B17FokmWZiaXa%0AOGBSZu6xQ0SHV7mIFg4LXQdcys4T2ww6Ixn2D2JQW7yYvEwhVwyFrHedTbIs%2BFsa%0A9H43p%2FkQK5mtWKT%2FdO%2FcviMToDL%2BnX9df7buv7gIvZ9zRP4hmzGG3gt3VBCFWucD%0Ab73Oy67UqbH8Eafe7HW2RTw00AhnH6WYgQhNlhCR4HPkDgO6LQvBIDCz1a25HRtb%0AAba%2Fvk5ZklXgsGU0kaGr6KyYwjBUZnpX4Ai%2FlgeR9pFQV0m436VqpLlACh3jkArK%0A3OzMDb64k8KDPW9m4Ygxy5kCAwEAAQ%3D%3D%0A-----END%20PUBLIC%20KEY----- |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment