AWS Cognito からの JWT トークンを持っています。トークンは getOpenIdTokenForDeveloperIdentity への呼び出しを介して取得され、AWS Cognito Developer Authenticated ID のフローを使用しています
トークンは SHA512 でハッシュされ、使用しているリージョン/ゾーンの Amazon RSA 秘密鍵で署名されています。
Pythonで署名を外部から検証するにはどうすればよいですか?
AWS Cognito からの JWT トークンを持っています。トークンは getOpenIdTokenForDeveloperIdentity への呼び出しを介して取得され、AWS Cognito Developer Authenticated ID のフローを使用しています
トークンは SHA512 でハッシュされ、使用しているリージョン/ゾーンの Amazon RSA 秘密鍵で署名されています。
Pythonで署名を外部から検証するにはどうすればよいですか?
ここで自分の質問に答えて、誰かに役立つことを願っています。
私の場合、AWS Cognito Developer Authenticated ID ルート経由で取得した JWT トークンの署名を検証したかったのです。AWS API Gateway は関与しません。
さまざまなサイトの多くのポスターのように、AWS JWT トークンの署名を外部、つまりサーバー側またはスクリプト経由で検証するために必要なビットを正確につなぎ合わせるのに苦労しました
AWS JWT トークンの署名を検証するための要点を把握して配置したと思います。PyCrypto の Crypto.Signature から pyjwt または PKCS1_v1_5c のいずれかを使用して AWS JWT/JWS トークンを検証します。
はい、これは私の場合はpythonでしたが、ノードでも簡単に実行できます(npm install jsonwebtoken jwk-to-pem request)。
私がこれを理解しようとしていたとき、私はほとんど正しいことをしていましたが、Python dict の順序付け、またはその欠落、および json 表現などのニュアンスがあったため、コメントでいくつかの落とし穴を強調しようとしました。
また、署名者の証明書を使用して検証を行うことについて、いくつか質問があることにも気付きました。これも表示するように要点を修正します。
うまくいけば、それはどこかで誰かを助けるかもしれません。