diff options
author | Kristofer Hallin <kristofer@sunet.se> | 2021-10-29 14:00:29 +0200 |
---|---|---|
committer | Kristofer Hallin <kristofer@sunet.se> | 2021-10-29 14:00:29 +0200 |
commit | 0860c6988bb1ebbaadea31245a9f0f609c80ca8e (patch) | |
tree | f66b540a9b1dc71d5123d2cdcde8a64134b9ef16 /tools | |
parent | 99cb37c47337a1c78a157ca7303cd37796e266b1 (diff) |
Simple tool which will produce JWT tokens for testing.
Diffstat (limited to 'tools')
-rw-r--r-- | tools/jwt_producer.py | 45 |
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}') |