翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ユーザープールAPIと認証サーバーの使用
サインアップ、サインイン、ユーザープール内のユーザー管理を行うには、2 つのオプションがあります。
-
ユーザープールのエンドポイントには、ホストされた UI とフェデレーションエンドポイントが含まれます。これらは、ユーザープールのドメインを選択すると Amazon Cognito がアクティブ化するパブリックウェブページのパッケージを構成します。サインアップ、サインイン、パスワード管理、多要素認証 (MFA) のページなど、Amazon Cognito ユーザープールの認証および認可機能を簡単に開始するには、ホストされた UI の組み込みユーザーインターフェイスを使用します。他のユーザープールエンドポイントは、サードパーティー ID プロバイダー () による認証を容易にしますIdPs。行われるサービスには以下が含まれます。
-
saml2/idpresponse
や など IdPs、 からの認証されたクレームのサービスプロバイダーコールバックエンドポイントoauth2/idpresponse
。Amazon Cognito がアプリと IdP の間の中間サービスプロバイダー (SP) である場合、コールバックエンドポイントはサービスを表します。 -
環境に関する情報を提供するエンドポイント (
oauth2/userInfo
やjwks.json
など)。アプリケーションは、 AWS SDKsおよび 2.0 OAuth ライブラリを使用してトークンを検証したり、ユーザープロファイルデータを取得したりするときに、これらのエンドポイントを使用します。
-
-
Amazon Cognito ユーザープールAPIは、独自のカスタムフロントエンドでサインイン情報を収集した後、ユーザーを認証するための、ウェブまたはモバイルアプリ用の一連のツールです。ユーザープールAPI認証では、次のJSONウェブトークンが生成されます。
-
ユーザーからの検証可能な属性クレームを含む ID トークン。
-
AWS サービスエンドポイント へのトークン認証APIリクエストの作成をユーザーに許可するアクセストークン。
注記
デフォルトでは、ユーザープールAPI認証からのアクセストークンには
aws.cognito.signin.user.admin
スコープのみが含まれます。サードパーティー へのリクエストを承認するなど、追加のスコープを持つアクセストークンを生成するには、ユーザープールエンドポイントを介して認証中にスコープをリクエストするかAPI、 にカスタムスコープを追加しますトークン生成前の Lambda トリガー。アクセストークンのカスタマイズにより、 AWS 請求にコストがかかります。
-
通常はユーザープールのエンドポイントを使用してサインインするフェデレーションユーザーを、プロファイルがユーザープールに対してローカルであるユーザーとリンクできます。ローカルユーザーは、外部 IdP を介したフェデレーションなしに、ユーザープールディレクトリにのみ存在します。フェデレーティッド ID をAdminLinkProviderForUserAPIリクエスト内のローカルユーザーにリンクすると、ユーザープール でサインインできますAPI。詳細については、「フェデレーションユーザーを既存のユーザープロファイルにリンクする」を参照してください。
Amazon Cognito ユーザープールAPIはデュアルパーパスです。Amazon Cognito ユーザープールリソースを作成して設定します。例えば、ユーザープールの作成、 AWS Lambda トリガーの追加、ホストされた UI ドメインの設定を行うことができます。ユーザープールは、ローカルユーザーとリンクされたユーザーのサインアップ、サインイン、その他のユーザーオペレーションAPIも実行します。
Amazon Cognito ユーザープールのシナリオ例 API
-
ユーザーは、アプリで作成した [Create an account] (アカウントを作成) ボタンを選択します。E メールアドレスとパスワードを入力します。
-
アプリケーションはSignUpAPIリクエストを送信し、ユーザープールに新しいユーザーを作成します。
-
アプリケーションは、ユーザーに E メールの確認コードを求めます。ユーザーは、E メールメッセージで受け取ったコードを入力します。
-
アプリケーションは、ユーザーの確認コードを使用してConfirmSignUpAPIリクエストを送信します。
-
アプリケーションは、ユーザーにユーザー名とパスワードの入力を求め、情報を入力します。
-
アプリケーションはInitiateAuthAPIリクエストを送信し、ID トークン、アクセストークン、および更新トークンを保存します。アプリはOIDCライブラリを呼び出してユーザーのトークンを管理し、そのユーザーの永続セッションを維持します。
Amazon Cognito ユーザープール ではAPI、IdP をフェデレーションするユーザーにはサインインできません。これらのユーザーは、ユーザープールのエンドポイントを使用して認証する必要があります。ホストされた UI を含むユーザープールエンドポイントの詳細については、「ユーザープールエンドポイントとホストされた UI リファレンス」を参照してください。フェデレーションユーザーは、ホストされた UI で起動して IdP を選択することも、ホスト UI をスキップしてユーザーを IdP に直接送信してサインインさせることもできます。へのAPIリクエストに IdP パラメータ認可エンドポイントが含まれている場合、Amazon Cognito はユーザーを IdP サインインページにサイレントリダイレクトします。
ユーザープールエンドポイントのサンプルシナリオ
-
ユーザーは、アプリで作成した [Create an account] (アカウントを作成) ボタンを選択します。
-
開発者の認証情報を登録したソーシャル ID プロバイダーのリストをユーザーに提示します。ユーザーは Apple を選択します。
-
アプリは、プロバイダー名
SignInWithApple
で 認可エンドポイント へのリクエストを開始します。 -
ユーザーのブラウザで Apple OAuth認証ページが開きます。ユーザーは、Amazon Cognito がプロファイル情報を読み取ることを許可することを選択します。
-
Amazon Cognito は Apple アクセストークンを確認し、ユーザーの Apple プロファイルを照会します。
-
ユーザーは Amazon Cognito 認可コードをアプリケーションに提示します。
-
アプリケーションは認証コードを と交換トークンエンドポイントし、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 認証フレームワーク」の「クライアントタイプ
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なしでリクエストを直接送信することもできます。
アプリケーションクライアントにクライアントシークレットがある場合は、オペレーションによっては、AuthParameters
で SecretHash
パラメータまたは SECRET_HASH
値を指定する必要があります。詳細については、「シークレットハッシュ 値の計算」を参照してください。
認証されていないユーザーオペレーション |
---|
SignUp |
ConfirmSignUp |
ResendConfirmationCode |
ForgotPassword |
ConfirmForgotPassword |
InitiateAuth |
トークン認証によるユーザーオペレーションは、ユーザーがサインインしたか、サインインプロセスを開始した後に、ユーザーのサインアウト、認証情報の管理、変更、表示を行います。アプリでシークレットを配布せず、ユーザー自身の認証情報を使用してリクエストを承認する場合は、トークン認証APIオペレーションを使用します。ユーザーがサインインを完了した場合は、アクセストークンを使用してトークン認証APIリクエストを承認する必要があります。ユーザーがサインインプロセスの途中である場合は、前のAPIリクエストに対するレスポンスで Amazon Cognito が返したセッショントークンを使用して、トークンが認可したリクエストを承認する必要があります。
例えば、パブリッククライアントでは、書き込みアクセスをユーザー自身のプロファイルのみに制限する方法でユーザーのプロファイルを更新する場合があります。この更新を行うには、クライアントにユーザーのアクセストークンを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 |
✓ | ✓ |
RevokeToken 1 |
1 は更新トークンをパラメータとして RevokeToken 受け取ります。更新トークンは、認証トークンとして、またターゲットリソースとして機能します。