実は pyjwt をそのまま使った場合だと動作しない場合があります
jwk で公開している楕円曲線演算方法が P-521 の場合 Y の鍵が 66 bytes である必要があります
しかし実際は 65 or 64 bytes (64bytes である可能性は 0.2%) になる可能性があり pyjwt では 65 or 64 bytes のときを考慮しておりません
なので以下のように条件を変更するパッチを当てる必要があります
vim /path/to/venv/site-packages/jwt/algorithms.py
elif curve =="P-521":iflen(x)==66and(len(y)==66orlen(y)==65):
curve_obj = ec.SECP521R1()else:raise InvalidKeyError("Coords should be 66 bytes for curve P-521")
最後に
jwk は基本的に https 経由で取得することになると思います
jwt も REST などの API 経由のレスポンスで取得することになると思います