def dump_pem_to_jwks(in_private): try: from jwcrypto.jwk import JWK, JWKSet except ImportError as e: msg = "You have to install jwcrypto to use this function" print(msg) raise ImportError(msg) from e with open(in_private, "rb") as privfile: data = privfile.read() jwk = JWK() jwk.import_from_pem(data) jwks = JWKSet() jwks.add(jwk) raw = jwks.export(private_keys=True) formatted = json.dumps(json.loads(raw), indent=2) with open("private.json", "w") as priv_jwks_file: priv_jwks_file.write(formatted) raw = jwks.export(private_keys=False) formatted = json.dumps(json.loads(raw), indent=2) with open("public.json", "w") as public_jwks_file: public_jwks_file.write(formatted)
from os import getenv from jwcrypto.jwk import JWK from jwcrypto.jwt import JWT import urllib.parse import time token_expiration_time = int(getenv("TOKEN_EXPIRATION_TIME")) client_secret = getenv("CLIENT_SECRET") issuer = getenv("ISSUER") key_file = open("private_key.pem", "rb") priv_key = key_file.read() key_file.close() key = JWK() key.import_from_pem(priv_key, password=None) def authenticate(client_id, code): payload = { "client_id": client_id, "client_secret": client_secret, "code": code } oauth_response = post("https://github.com/login/oauth/access_token", params=payload) oauth_json = urllib.parse.parse_qs(oauth_response.text) github_token = oauth_json["access_token"][0] user_response = get( "https://api.github.com/user",