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)
示例#2
0
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",