DjangoでCognitoの利用 ~その他~

本記事は、boto3を利用して行っている。

準備と前項については以下記事を参照。

確認コードの再発行

登録が完了する前に確認コードを忘れてしまった場合の再発行。

cognito.forgot_password(
    ClientId=settings.APP_CLIENT_ID, 
    SecretHash=secletHash, 
    Username=userName
);

パスワード変更

変更前のパスワードを利用して、パスワードの変更をおこなう。

認証がされていないとできない。

cognito.change_password(
    PreviousPassword=[古いパスワード],
    ProposedPassword=[新しいパスワード],
    AccessToken=[アクセストークン]
);

パスワード再発行

パスワードを発行するためには、二つの手順をおこなう必要がある。
1.パスワード再登録用に確認コードを発行。
2.パスワード再登録。

まず、パスワードの再登録用に確認コードを発行。

cognito.forgot_password(
    ClientId=[APP_CLIENT_ID], 
    SecretHash=[ハッシュ値], 
    Username=[ユーザー名]
);

次に、パスワードの再登録。

cognito.confirm_forgot_password(
    ClientId=[APP_CLIENT_ID],
    SecretHash=[ハッシュ値],
    Username=[ユーザー名],
    ConfirmationCode=[確認コード],
    Password=[再登録パスワード]
);

アクセストークンの再発行

アクセストークンは一定時間で無効になるため、期限が切れてしまっていた場合は、再発行が必要。

cognito.admin_initiate_auth(
    UserPoolId=[POOL_ID],
    ClientId=[APP_CLIENT_ID],

    AuthFlow = "REFRESH_TOKEN_AUTH",
    AuthParameters = {
        "REFRESH_TOKEN": [リフレッシュトークン],
        "SECRET_HASH" : [ハッシュ値],
    }
);

参考

CognitoIdentityProvider — Boto3 Docs 1.26.22 documentation (amazonaws.com)