Python Cognito AccessTokenからUserAttributesを取得

Pocket

Pythonスクリプトを使って、 Amazon Cognitoで作成したユーザープールの ユーザーに接続し AccessTokenからUserAttributesを取得する方法です。

Cognitoの ユーザープール側は、 [アプリケーションクライアント]の「認証フロー」で、 ALLOW_ADMIN_USER_PASSWORD_AUTHに チェックする必要があります。

認証のための管理 API のユーザー名パスワード認証
import boto3

config = {
    "profile":None,
    "pool_id": "プールID",
    "client_id": "クライアントID",
    "region": "リージョン"
}

try:
    session = boto3.Session(profile_name=config['profile'])
    # aws_access_key_id, aws_secret_access_keyを入れる場合↓
    cognito = session.client('cognito-idp', region_name=config['region'])
    res = cognito.admin_initiate_auth(
            UserPoolId = config["pool_id"],
            ClientId = config["client_id"],
            AuthFlow = "ADMIN_USER_PASSWORD_AUTH",
            AuthParameters = {
                "USERNAME": "ユーザー名",
                "PASSWORD": "パスワード",
            }
    )
    user_info = cognito.get_user(AccessToken=res["AuthenticationResult"]["AccessToken"])
    for info in  user_info['UserAttributes']:
        print(f"{info['Name']}:{info['Value']}")
except Exception as e:
    print(e)

Cognito 設定画面[アプリケーションクライアント]の 認証フローで ALLOW_ADMIN_USER_PASSWORD_AUTHが 設定されていない場合、 下のInvalidParameterExceptionが 出ます

An error occurred (InvalidParameterException) when calling the AdminInitiateAuth operation: Auth flow not enabled for this client

ユーザー名もしくはパスワードが 間違えている場合 NotAuthorizedExceptionです

An error occurred (NotAuthorizedException) when calling the AdminInitiateAuth operation: Incorrect username or password.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


2022 MJELD TECHNOLOGIES. ALL RIGHTS RESERVED