Amazon Cognito ユーザープールを介してユーザーを認証するために Application Load Balancer を設定するにはどうすればよいですか?

所要時間3分
0

ユーザー認証のために Application Load Balancer を Amazon Cognito ユーザープールと統合したいと考えています。

簡単な説明

ユーザーを管理および認証するために、Application Load BalancerAmazon 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 組み込み認証によりログインを簡略化する)

Application Load Balancer のリスナールール

OIDC ユーザープール IdP 認証フロー

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ