Amazon Cognito ユーザープールAPIとユーザープールエンドポイントの使用 - Amazon Cognito

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Cognito ユーザープールAPIとユーザープールエンドポイントの使用

サインアップ、サインイン、ユーザープール内のユーザー管理を行うには、2 つのオプションがあります。

  1. ユーザープールのエンドポイントには、ホストされた UIフェデレーションエンドポイントが含まれます。これらは、ユーザープールのドメインを選択すると Amazon Cognito がアクティブ化するパブリックウェブページのパッケージを構成します。サインアップ、サインイン、パスワード管理、多要素認証 (MFA) のページなど、Amazon Cognito ユーザープールの認証および承認機能をすばやく開始するには、ホストされた UI の組み込みユーザーインターフェイスを使用します。他のユーザープールエンドポイントは、サードパーティーの ID プロバイダー () による認証を容易にしますIdPs。行われるサービスには以下が含まれます。

    1. saml2/idpresponse や など IdPs、 からの認証されたクレームのサービスプロバイダーコールバックエンドポイントoauth2/idpresponse。Amazon Cognito がアプリと IdP の間の中間サービスプロバイダー (SP) である場合、コールバックエンドポイントはサービスを表します。

    2. 環境に関する情報を提供するエンドポイント (oauth2/userInfo や jwks.json など)。アプリケーションは、 AWS SDKsおよび 2.0 ライブラリを使用してトークンを検証したり、ユーザープロファイルデータを取得したりするときにOAuth、これらのエンドポイントを使用します。

  2. Amazon Cognito ユーザープールAPIは、独自のカスタムフロントエンドでサインイン情報を収集した後、ウェブまたはモバイルアプリがユーザーを認証するための一連のツールです。ユーザープールAPI認証では、次のJSONウェブトークンが生成されます。

    1. ユーザーからの検証可能な属性クレームを含む ID トークン。

    2. AWS サービスエンドポイント へのトークン認証APIリクエストの作成をユーザーに許可するアクセストークン。

      注記

      デフォルトでは、ユーザープールAPI認証からのアクセストークンには aws.cognito.signin.user.adminスコープのみが含まれます。サードパーティーの へのリクエストを承認するなど、追加のスコープを持つアクセストークンを生成するには、ユーザープールエンドポイントを介して認証中にスコープをリクエストするかAPI、 にカスタムスコープを追加しますトークン生成前の Lambda トリガー。アクセストークンのカスタマイズにより AWS 、請求にコストがかかります。

通常はユーザープールのエンドポイントを使用してサインインするフェデレーションユーザーを、プロファイルがユーザープールに対してローカルであるユーザーとリンクできます。ローカルユーザーは、外部 IdP を介したフェデレーションなしに、ユーザープールディレクトリにのみ存在します。AdminLinkProviderForUser API リクエストでフェデレーション ID をローカルユーザーにリンクすると、ユーザーはユーザープール でサインインできますAPI。詳細については、「フェデレーションユーザーを既存のユーザープロファイルにリンクする」を参照してください。

Amazon Cognito ユーザープールAPIはデュアルパーパスです。Amazon Cognito ユーザープールリソースを作成して設定します。例えば、ユーザープールの作成、 AWS Lambda トリガーの追加、ホストされた UI ドメインの設定を行うことができます。ユーザープールは、ローカルユーザーとリンクされたユーザーに対してサインアップ、サインイン、およびその他のユーザーオペレーションAPIも実行します。

Amazon Cognito ユーザープールのシナリオ例 API

  1. ユーザーは、アプリで作成した [Create an account] (アカウントを作成) ボタンを選択します。E メールアドレスとパスワードを入力します。

  2. アプリケーションはSignUpAPIリクエストを送信し、ユーザープールに新しいユーザーを作成します。

  3. アプリケーションは、ユーザーに E メールの確認コードを求めます。ユーザーは、E メールメッセージで受け取ったコードを入力します。

  4. アプリケーションは、ユーザーの確認コードを含むConfirmSignUpAPIリクエストを送信します。

  5. アプリケーションは、ユーザーにユーザー名とパスワードの入力を求め、情報を入力します。

  6. アプリケーションは InitiateAuthAPIリクエストを送信し、ID トークン、アクセストークン、および更新トークンを保存します。アプリはOIDCライブラリを呼び出してユーザーのトークンを管理し、そのユーザーの永続セッションを維持します。

Amazon Cognito ユーザープール ではAPI、IdP を介してフェデレーションするユーザーをサインインすることはできません。これらのユーザーは、ユーザープールのエンドポイントを使用して認証する必要があります。ホストされた UI を含むユーザープールエンドポイントの詳細については、「ユーザープールフェデレーションエンドポイントとホストされた UI リファレンス」を参照してください。フェデレーションユーザーは、ホストされた UI で起動して IdP を選択することも、ホスト UI をスキップしてユーザーを IdP に直接送信してサインインさせることもできます。へのAPIリクエストに IdP パラメータ認可エンドポイントが含まれている場合、Amazon Cognito はユーザーを IdP サインインページにサイレントにリダイレクトします。

ユーザープールエンドポイントのサンプルシナリオ

  1. ユーザーは、アプリで作成した [Create an account] (アカウントを作成) ボタンを選択します。

  2. 開発者の認証情報を登録したソーシャル ID プロバイダーのリストをユーザーに提示します。ユーザーは Apple を選択します。

  3. アプリは、プロバイダー名 SignInWithApple認可エンドポイント へのリクエストを開始します。

  4. ユーザーのブラウザで Apple OAuth認証ページが開きます。ユーザーは、Amazon Cognito がプロファイル情報を読み取ることを許可することを選択します。

  5. Amazon Cognito は Apple アクセストークンを確認し、ユーザーの Apple プロファイルを照会します。

  6. ユーザーは Amazon Cognito 認証コードをアプリケーションに提示します。

  7. アプリケーションは認証コードを トークンエンドポイント と交換し、ID トークン、アクセストークン、更新トークンを保存します。アプリはOIDCライブラリを呼び出してユーザーのトークンを管理し、そのユーザーの永続セッションを維持します。

ユーザープールAPIとユーザープールエンドポイントは、このガイドで説明されているさまざまなシナリオをサポートしています。以下のセクションでは、ユーザープールがサインアップ、サインイン、リソース管理の要件をサポートするクラスにAPIさらに分割される方法について説明します。

Amazon Cognito ユーザープールの認証されたオペレーションと認証されていないAPIオペレーション

Amazon Cognito ユーザープール はAPI、リソース管理インターフェイスとユーザー向け認証および認可インターフェイスの両方であり、そのオペレーションで従う認証モデルを組み合わせます。API オペレーションによっては、IAM認証情報、アクセストークン、セッショントークン、クライアントシークレット、またはこれらの組み合わせを使用して認証を提供する必要がある場合があります。多くのユーザー認証および承認操作では、リクエストの認証済みバージョンと認証されていないバージョンを選択できます。認証されていない操作は、モバイルアプリなど、ユーザーに配布するアプリのセキュリティ上のベストプラクティスです。コードにシークレットを含める必要はありません。

IAM認証された管理オペレーション および のIAMポリシーでのみアクセス許可を割り当てることができますIAM認証されたユーザーオペレーション

IAM- 認証された管理オペレーションは、 のように、ユーザープールとアプリケーションクライアントの設定を変更して表示します AWS Management Console。

例えば、 UpdateUserPoolAPIリクエストでユーザープールを変更するには、リソースを更新するための AWS 認証情報とIAMアクセス許可を提示する必要があります。

AWS Command Line Interface (AWS CLI) または でこれらのリクエストを承認するには AWS SDK、リクエストにIAM認証情報を追加する環境変数またはクライアント設定で環境を設定します。詳細については、「」の AWS 「 認証情報 AWS を使用した へのアクセス」を参照してくださいAWS 全般のリファレンス。Amazon Cognito ユーザープール のサービスエンドポイントにリクエストを直接送信することもできますAPI。リクエストのヘッダーに埋め込んだ AWS 認証情報を使用して、これらのリクエストを承認または署名する必要があります。詳細については、「リクエストの署名 AWS API」を参照してください。

IAM認証された管理オペレーション
AddCustomAttributes
CreateGroup
CreateIdentityProvider
CreateResourceServer
CreateUserImportJob
CreateUserPool
CreateUserPoolClient
CreateUserPoolDomain
DeleteGroup
DeleteIdentityProvider
DeleteResourceServer
DeleteUserPool
DeleteUserPoolClient
DeleteUserPoolDomain
DescribeIdentityProvider
DescribeResourceServer
DescribeRiskConfiguration
DescribeUserImportJob
DescribeUserPool
DescribeUserPoolClient
DescribeUserPoolDomain
GetCSVHeader
GetGroup
GetIdentityProviderByIdentifier
GetSigningCertificate
GetUICustomization
GetUserPoolMfaConfig
ListGroups
ListIdentityProviders
ListResourceServers
ListTagsForResource
ListUserImportJobs
ListUserPoolClients
ListUserPools
ListUsers
ListUsersInGroup
SetRiskConfiguration
SetUICustomization
SetUserPoolMfaConfig
StartUserImportJob
StopUserImportJob
TagResource
UntagResource
UpdateGroup
UpdateIdentityProvider
UpdateResourceServer
UpdateUserPool
UpdateUserPoolClient
UpdateUserPoolDomain

IAM-認証されたユーザーオペレーションは、ユーザーのサインアップ、サインイン、認証情報の管理、変更、表示を行います。

例えば、ウェブフロントエンドをバックアップするサーバー側のアプリケーション層を設定できます。サーバー側のアプリは、Amazon Cognito リソースへの特権アクセスで信頼するOAuth機密クライアントです。アプリにユーザーを登録するために、サーバーは AdminCreateUserAPIリクエストに AWS 認証情報を含めることができます。OAuth クライアントタイプの詳細については、「2.0 認証フレームワークOAuth」の「クライアントタイプ」を参照してください。

AWS CLI または でこれらのリクエストを承認するには AWS SDK、リクエストにIAM認証情報を追加する環境変数またはクライアント設定を使用してサーバー側のアプリケーション環境を設定します。詳細については、「」の AWS 「 認証情報 AWS を使用した へのアクセス」を参照してくださいAWS 全般のリファレンス。Amazon Cognito ユーザープール のサービスエンドポイントにリクエストを直接送信することもできますAPI。リクエストのヘッダーに埋め込んだ AWS 認証情報を使用して、これらのリクエストを承認または署名する必要があります。詳細については、「リクエストの署名 AWS API」を参照してください。

アプリケーションクライアントにクライアントシークレットがある場合は、IAM認証情報と、オペレーションに応じて、 の SecretHashパラメータまたは SECRET_HASH値の両方を指定する必要がありますAuthParameters。詳細については、「シークレットハッシュ 値の計算」を参照してください。

IAM認証されたユーザーオペレーション
AdminAddUserToGroup
AdminConfirmSignUp
AdminCreateUser
AdminDeleteUser
AdminDeleteUserAttributes
AdminDisableProviderForUser
AdminDisableUser
AdminEnableUser
AdminForgetDevice
AdminGetDevice
AdminGetUser
AdminInitiateAuth
AdminLinkProviderForUser
AdminListDevices
AdminListGroupsForUser
AdminListUserAuthEvents
AdminRemoveUserFromGroup
AdminResetUserPassword
AdminRespondToAuthChallenge
AdminSetUserMFAPreference
AdminSetUserPassword
AdminSetUserSettings
AdminUpdateAuthEventFeedback
AdminUpdateDeviceStatus
AdminUpdateUserAttributes
AdminUserGlobalSignOut

認証されていないユーザーオペレーションでは、ユーザーのサインアップ、サインイン、およびパスワードのリセットが開始されます。インターネット上の全員にサインアップしてアプリにサインインさせたい場合は、認証されていないオペレーションまたはパブリックAPIオペレーションを使用します。

例えば、アプリにユーザーを登録するには、シークレットへの特権アクセスを提供しないOAuthパブリッククライアントを配布できます。このユーザーを認証されていないAPIオペレーション に登録できますSignUp

を使用して開発したパブリッククライアントでこれらのリクエストを送信するには AWS SDK、認証情報を設定する必要はありません。また、追加の承認なしで、Amazon Cognito ユーザープールのサービスエンドポイントAPIにリクエストを直接送信することもできます。

アプリケーションクライアントにクライアントシークレットがある場合は、オペレーションによっては、AuthParametersSecretHash パラメータまたは SECRET_HASH 値を指定する必要があります。詳細については、「シークレットハッシュ 値の計算」を参照してください。

認証されていないユーザーオペレーション
SignUp
ConfirmSignUp
ResendConfirmationCode
ForgotPassword
ConfirmForgotPassword
InitiateAuth

トークン認証によるユーザーオペレーションは、ユーザーがサインインしたか、サインインプロセスを開始した後に、ユーザーのサインアウト、認証情報の管理、変更、表示を行います。アプリでシークレットを配布せず、ユーザー自身の認証情報を使用してリクエストを承認する場合は、トークン認証APIオペレーションを使用します。ユーザーがサインインを完了した場合は、アクセストークンを使用してトークン認証APIリクエストを承認する必要があります。ユーザーがサインインプロセスの途中で、Amazon Cognito が前のAPIリクエストへのレスポンスで返したセッショントークンを使用して、トークン認証リクエストを承認する必要があります。

例えば、パブリッククライアントでは、書き込みアクセスをユーザー自身のプロファイルのみに制限する方法でユーザーのプロファイルを更新する場合があります。この更新を行うために、クライアントはユーザーのアクセストークンをUpdateUserAttributesAPIリクエストに含めることができます。

を使用して開発したパブリッククライアントでこれらのリクエストを送信するには AWS SDK、認証情報を設定する必要はありません。リクエストには AccessToken または Session パラメータを含めてください。Amazon Cognito ユーザープール のサービスエンドポイントにリクエストを直接送信することもできますAPI。サービスエンドポイントへのリクエストを承認するには、リクエストのPOST本文にアクセストークンまたはセッショントークンを含めます。

トークン認証オペレーションのAPIリクエストに署名するには、アクセストークンをリクエストの Authorizationヘッダーとして 形式で含めますBearer <Base64-encoded access token>

トークン認証によるユーザーオペレーション AccessToken セッション
RespondToAuthChallenge
ChangePassword
GetUser
UpdateUserAttributes
DeleteUserAttributes
DeleteUser
ConfirmDevice
ForgetDevice
GetDevice
ListDevices
UpdateDeviceStatus
GetUserAttributeVerificationCode
VerifyUserAttribute
SetUserSettings
SetUserMFAPreference
GlobalSignOut
AssociateSoftwareToken
UpdateAuthEventFeedback
VerifySoftwareToken
RevokeToken1

1 パラメータ RevokeToken として更新トークンを取得します。更新トークンは、認証トークンとして、またターゲットリソースとして機能します。