LambdaからAuthFlow=USER_SRP_AUTHでCognitoの認証を通す


目的

LambdaからInitiateAuthAuthFlowUSER_SRP_AUTHでCognitoの認証を通す。

AdminInitiateAuthADMIN_USER_PASSWORD_AUTHを使って良いならそっち推奨
(boto3のadmin_initiate_auth使ってID/PWだけで簡単に実装できる。)

方法

自力でやろうとすると、initiate_authrespond_to_auth_challengeを実行する必要があるが、
respond_to_auth_challengeの方のPASSWORD_CLAIM_SIGNATUREの計算で挫折してしまうため、
こちらを拝借する。。
pip installできる(はず)だが、ファイル数が少ないので直接ダウンロードして使う。

__init__.pyが居ると、色々インストールしないといけなくなるため、削除してしまってOK。
(↓になるように)

Lambdaに下記を実装する。

from warrant.aws_srp import AWSSRP

u = AWSSRP(pool_id='ユーザプールID', client_id='クライアントID', username='ID', password='PW')
res = u.authenticate_user()
id_token = res['AuthenticationResult']['IdToken']

スペシャルサンクス