Amazon Cognito ユーザープールを介してユーザーを認証するために Application Load Balancer を設定するにはどうすればよいですか?
ユーザー認証のために Application Load Balancer を Amazon Cognito ユーザープールと統合したいと考えています。
簡単な説明
ユーザーを管理および認証するために、Application Load Balancer を Amazon Cognito ユーザープールと統合できます。Application Load Balancer と Amazon Cognito ユーザープールでユーザー認証を設定するには、次のステップを実行します。
1. Application Load Balancer を作成し、その DNS 名を取得します。
2. Amazon Cognito ユーザープールを作成して設定します。
3. Application Load Balancer を設定します。
4. 設定をテストします。
解決方法
アプリケーションユーザーを認証するように Application Load Balancer と Amazon Cognito ユーザープールを設定するには、次のステップを実行します。
Application Load Balancer を作成する
注: Application Load Balancer を既に設定している場合は、次のセクションに進んでください。
1. インターネット向け Application Load Balancer を作成します。
2. Application Load Balancer の HTTPS リスナーを作成します。
注: HTTPS リスナーのみが、authenticate-cognito および authenticate-oidc ルールアクションタイプをサポートしています。
Application Load Balancer の DNS 名を取得する
1. Amazon Elastic Compute Cloud (Amazon EC2) コンソールを開きます。
2. ナビゲーションペインの [Load Balancing] (ロードバランシング) で、[Load Balancers] (ロードバランサー) を選択します。
3. Application Load Balancer を選択します。
4. [Description] (説明) タブで、ロードバランサーの [DNS name] (DNS 名) をコピーして保存します。この DNS 名を使用して、テスト用に Application Load Balancer のエンドポイント URL にアクセスします。
Amazon Cognito ユーザープールを作成して設定する
1. アプリクライアントを使用して Amazon Cognito ユーザープールを作成します。アプリクライアントを設定する際に、[Generate a client secret] (クライアントシークレットを生成) ラジオボタンを選択します。
詳細については、「Amazon Cognito を使用する準備を行う」を参照してください。
注: ユーザープールを作成する際に、本番環境に必要な設定を行います。ユーザープールを作成した後は、一部のユーザープール設定を変更できません。例えば、ユーザー登録に必要な標準属性を変更することはできません。
2. Amazon Cognito コンソール を開きます。
3. ナビゲーションペインで [User pools] (ユーザープール) を選択し、ユーザープールを選択します。[User pool ID] (ユーザープール ID) をコピーして保存します。この ID を使用して、ユーザー認証のために Application Load Balancer を設定します。
4. ユーザープールの [App integration] (アプリ統合) タブを選択し、ユーザープールのドメインを追加します。
5. ユーザープールの [App integration] (アプリ統合) タブから、[App clients and analytics] (アプリクライアントと分析) セクションに移動します。その後、アプリクライアントを選択します。
6. アプリクライアントページの [App client information] (アプリクライアント情報) で、[Client ID] (クライアント ID) をコピーして保存します。この ID を使用して、ユーザー認証のために Application Load Balancer を設定します。
7. [Hosted UI] (ホストされた UI) セクションで [Edit] (編集) を選択します。
8. [Add callback URL] (コールバック URL を追加) を選択し、https://loadBalancerDNSName/oauth2/idpresponse と入力します。
-または-
CNAME レコードを使用してカスタムドメインを Application Load Balancer にマッピングした場合は、https://CNAME/oauth2/idpresponse と入力します。
注: loadBalancerDNSName を、Amazon EC2 コンソールからコピーした DNS 名に置き換えます。CNAME レコードを使用している場合は、CNAME をカスタムドメインに置き換えます。
9. [Add sign-out URL] (サインアウト URL を追加) を選択し、サインアウト後にユーザーをリダイレクトする URL を入力します。テスト用に、https://example.com/ のように有効な URL を入力できます。
10. [Identity providers] (ID プロバイダー) で、[Cognito user pool] (Cognito ユーザープール) のチェックボックスをオンにします。
11. [OAuth 2.0 grant types] (OAuth 2.0 付与タイプ) で、[Authorization code grant] (認証コード付与) チェックボックスをオンします。要件に合わせて、追加の OAuth 付与タイプを選択します。
12. [OpenID Connect scopes] (OpenID Connect スコープ) で、[OpenID] のチェックボックスをオンにします。OpenID スコープは ID トークンを返します。要件に合わせて、追加の OpenID Connect (OIDC) スコープを選択します。
13. [Save Changes] (変更を保存) を選択します。
詳細については、「ユーザープールのアプリケーションクライアントの設定」と「サードパーティー経由のユーザープールへのサインインの追加」を参照してください。
Application Load Balancer を設定する
1. Amazon EC2 コンソールを開きます。
2. ナビゲーションペインの [Load Balancing] (ロードバランシング) で、[Load Balancers] (ロードバランサー) を選択します。
3. Application Load Balancer を選択します。
4. [Listeners] (リスナー) タブで、更新する HTTPS リスナーの [default rule] (デフォルトルール) を選択し、その後に [Actions] (アクション)、[Manage rules] (ルールを管理) を選択します。
5. 次の設定を使用して HTTPS リスナーのデフォルトルールを編集します。
- [THEN] (その場合) で、[Add action] (アクションを追加) を選択します。
- [Authenticate] (認証) を選択します。
- [Authenticate] (認証) で、[Amazon Cognito] を選択します。
- ユーザープールで、Amazon Cognito コンソールからコピーした [User pool ID] (ユーザープール ID) を入力します。
- アプリケーションクライアントで、Amazon Cognito コンソールからコピーした [Client ID] (クライアント ID) を入力します。
- [Advanced settings] (詳細設定) を展開します。
- [Scope] (スコープ) で、ユーザープールのアプリクライアント用に設定したスコープをスペースで区切って入力します。スコープは、ユーザープールの OIDC 設定で確認できます。例えば、設定の [scopes_supported] 値が ["openid","email","phone","profile"] である場合、openid email phone profile と入力します。
- チェックマークアイコンを選択します。
6. 次の設定を使用して HTTPS リスナーのデフォルトルールを引き続き編集します。
- [THEN] (その場合) で、[Add action] (アクションを追加) を選択します。
注: [Add action] (アクションを追加) を選択できない場合は、ゴミ箱アイコンを使用して、[Redirect to] (リダイレクト先) などの既存のルーティングアクションを削除します。その後、再試行します。 - [Forward to] (転送先) を選択します。
- [転送先] で、1 つ以上のターゲットグループを選択します。
- (オプション) [グループレベルの維持] を設定します。
- チェックマークアイコンを選択します。
7. [Update] (更新) を選択して HTTPS リスナーのデフォルトルールを更新します。
設定をテストする
ウェブブラウザで、次の URL のいずれかを入力します。
- https://loadBalancerDNSName/
- https://CNAME/
注: loadBalancerDNSName を、Amazon EC2 コンソールからコピーした [DNS name] (DNS 名) に置き換えます。または、CNAME をカスタムドメインに置き換えます。ユーザープールの Amazon Cognito でホストされるウェブ UI にリダイレクトされます。ユーザーがサインインし、ユーザープールがそれらのユーザーを認証すると、それらのユーザーはターゲットにリダイレクトされます。
関連情報
Application Load Balancer の開始方法
Simplify login with Application Load Balancer built-in authentication (Application Load Balancer 組み込み認証によりログインを簡略化する)

関連するコンテンツ
- 質問済み 5年前lg...
- 質問済み 5年前lg...
- 質問済み 3ヶ月前lg...
- AWS公式更新しました 9ヶ月前