summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristofer Hallin <kristofer@sunet.se>2021-10-29 14:00:29 +0200
committerKristofer Hallin <kristofer@sunet.se>2021-10-29 14:00:29 +0200
commit0860c6988bb1ebbaadea31245a9f0f609c80ca8e (patch)
treef66b540a9b1dc71d5123d2cdcde8a64134b9ef16
parent99cb37c47337a1c78a157ca7303cd37796e266b1 (diff)
Simple tool which will produce JWT tokens for testing.
-rw-r--r--tools/jwt_producer.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/tools/jwt_producer.py b/tools/jwt_producer.py
new file mode 100644
index 0000000..3f8094d
--- /dev/null
+++ b/tools/jwt_producer.py
@@ -0,0 +1,45 @@
+import sys
+import jwt
+import getopt
+
+
+def usage():
+ progname = sys.argv[0]
+
+ print(f'{progname} -p <path to public key> -s <path to private key>' +
+ '-d <domain>, for example sunet.se>')
+ sys.exit(0)
+
+
+def create_token(private_key, domain):
+ payload = {
+ 'type': 'access',
+ 'domains': [domain] # We'll just do one domain now
+ }
+
+ with open(private_key, "r") as fd:
+ key = fd.read()
+
+ return jwt.encode(payload=payload, algorithm='ES256', key=key)
+
+
+if __name__ == '__main__':
+ try:
+ opts, args = getopt.getopt(sys.argv[1:], 'p:d:')
+ except getopt.GetoptError:
+ usage()
+
+ if len(sys.argv) != 5:
+ usage()
+
+ for opt, arg in opts:
+ if opt == '-p':
+ private_key = arg
+ elif opt == '-d':
+ domain = arg
+ else:
+ usage()
+
+ token = create_token(private_key, domain).decode('utf-8')
+
+ print(f'{token}')