Как проверить токен Firebase с помощью python_jwt - PullRequest
0 голосов
/ 22 декабря 2018

Я искал любые реальные примеры, которые берут токен из сеанса Firebase и фактически проверяют его.Я видел несколько примеров использования python-jose, но хотел рабочий пример использования python_jwt.Есть много примеров, которые его декодируют, но ни одного, который я видел в сквозном примере проверки

1 Ответ

0 голосов
/ 22 декабря 2018

Я попробовал это, используя пакет python-jwt и jwcrypto в Ubuntu, но они слишком старые.Я удалил пакеты ubuntu и сделал:

sudo pip install python_jwt
sudo pip install jwcrypto

Я написал следующую функцию для проверки токена:

import python_jwt as jwt
import urllib, json
import jwcrypto.jwk as jwk

class UnknownKID(Exception):
    pass

def validate_token(token):
    certificate_url = 'https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com'
    response = urllib.urlopen(certificate_url)
    certs = response.read()
    certs = json.loads(certs)

    processed_token = jwt.process_jwt(token)
    kid = processed_token[0]['kid']
    if kid not in certs:
        raise UnknownKID

    pub = jwk.JWK.from_pem(str(certs[kid]))
    return jwt.verify_jwt(token, pub_key=pub, allowed_algs=[processed_token[0]['alg']], checks_optional=True)

Надеюсь, что это будет полезно для кого-то еще.

...