Magicode logo
Magicode
5

PythonのPyJWTライブラリで、AWS CongnitoのJWT(IDトークン)を検証する関数を作った話

PyJWTで、AWS CongnitoのJWTを検証する。

こちらの記事を参考にさせていただきました。

PythonでAWS CognitoのJWTのバリデーション + Flaskへの組み込み

WebアプリケーションのバックエンドでDjangoやFlaskに組み込んで使うことを考えているのでひとまずはトークンを引数に、有効なものであるかどうか(True or False)を返す関数を作成しました。


JWTとは?

RFC 7519に定められている。

認証に使う文字列で、簡単に言うと「信頼する機関からの印鑑付き名刺」 ここで信頼する機関とはAWS CognitoやAuth0、Firebase Authenticationなどのサービス

例えばこんな文字列 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

ピリオド(.)で、ヘッダー.ペイロード.署名の3つの部分に分かれている。

これらはBase64 Url decodeすることで中身を確認できる

これはjwt.ioを参照


{'alg': 'HS256', 'typ': 'JWT'} {'sub': '1234567890', 'name': 'John Doe', 'iat': 1516239022}

「OAuth & OIDC 入門編 by #authlete」がとてもわかりやすかったです。

https://www.youtube.com/watch?v=PKPj_MmLq5E 

これをCognitoからのJWTトークンでやってみる。

AWS公式、JSON Web トークンの検証

tokenやpoolIDなどは各々のもので試してみてください!


Discussion

コメントにはログインが必要です。