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 を作成します。
  2. Application Load Balancer の DNS 名を取得します。
  3. Amazon Cognito ユーザープールを作成して設定します。
  4. Application Load Balancer を設定します。
  5. セットアップをテストします。

解決策

Application Load Balancer を作成する

注: Application Load Balancer を設定済みの場合は、次のセクションに進んでください。

Application Load Balancer を作成するには、次の手順を実行します。

  1. インターネットに接続するApplication Load Balancer を作成します。
  2. Application Load Balancer の HTTPS リスナーを作成します

注: HTTPS リスナーのみが、authenticate-cognito および authenticate-oidc ルールアクションタイプをサポートします。

Application Load Balancer の DNS 名を取得する

Application Load Balancer の DNS 名を取得するには、次の手順を実行します。

  1. Amazon Elastic Compute Cloud (Amazon EC2) コンソールを開きます。
  2. ナビゲーションペインの [ロードバランシング] で、[ロードバランサー] を選択します。
  3. Application Load Balancer を選択します。
  4. [詳細] タブで、ロードバランサーの DNS 名をコピーして保存します。この DNS 名を使用して、Application Load Balancer のエンドポイント URL へのアクセスをテストします。

Amazon Cognito ユーザープールを作成して設定する

Amazon Cognito ユーザープールを作成して設定するには、次のステップを実行します。

  1. アプリクライアントAmazon Cognito ユーザープールを作成します。アプリクライアントを設定するときに、[クライアントシークレットを生成] ラジオボタンを選択します。詳細については、「Amazon Cognito を使用するための準備」を参照してください。
    注: ユーザープールを作成するときに、本番環境に必要な設定を構成します。ユーザープールを作成した後は、一部のユーザープール設定を変更できません。たとえば、ユーザー登録に必須の標準属性は変更できません
  2. Amazon Cognito コンソールを開きます。
  3. ナビゲーションペインで [ユーザープール] を選択し、お使いのユーザープールを選択します。ユーザープール ID をコピーして保存します。この ID を使用して Application Load Balancer をユーザー認証用に設定します。
  4. ユーザープールの [アプリ統合] タブを選択し、ユーザープールのドメインを追加します。
  5. ユーザープールの [アプリ統合] タブから、[アプリクライアントと分析] セクションに移動します。その後、アプリクライアントを選択します。
  6. アプリクライアントページの [アプリクライアント情報] で、クライアント ID をコピーして保存します。この ID を使用して Application Load Balancer をユーザー認証用に設定します。
  7. [ホストされた UI] セクションから [編集] を選択します。
  8. [コールバック URL を追加] を選択し、https://load-balancer-dns-name/oauth2/idpresponse と入力します。
    または、
    CNAME レコードを使用してカスタムドメインをApplication Load Balancer にマップした場合は、https://CNAME/oauth2/idpresponse と入力します。
    注: load-balancer-dns-name は、Amazon EC2 コンソールからコピーした DNS 名に置き換えます。DNS 名に大文字を含めることはできません。CNAME レコードを使用している場合は、CNAME をカスタムドメインに置き換えます。
  9. [サインアウト URL の追加] を選択し、ユーザーがサインアウトした後にリダイレクトする URL を入力します。リダイレクトをテストするには、https://example.com/ など、任意の有効な URL を入力します。
  10. [ID プロバイダー] で、[Cognito ユーザープール] チェックボックスを選択します。
  11. [OAuth 2.0 の付与タイプ] で、[認証コード付与] を選択します。ユースケースに必要な、他の OAuth 付与タイプを選択します。
  12. [OpenID Connect のスコープ] で、[OpenID] チェックボックスを選択します。OpenID スコープが ID トークンを返します。ユースケースに必要な、他の OpenID Connect (OIDC) スコープを選択します。
  13. [変更を保存] を選択します。

詳細については、「ユーザープールとアプリクライアント構成を更新する」および「サードパーティ経由のユーザープールサインインを追加する」を参照してください。

Application Load Balancer を設定する

Application Load Balancer を設定するには、次の手順を実行します。

  1. Amazon EC2 コンソールを開きます。
  2. ナビゲーションペインの [ロードバランシング] で、[ロードバランサー] を選択します。
  3. Application Load Balancer を選択します。
  4. [リスナーとルール] タブで HTTPS プロトコルを選択し、[ルールを管理][ルールを編集] の順番に選択します。
  5. [リスナールール] セクションで、更新対象のデフォルトルールを選択し、[アクション][ルールを編集] の順番に選択します。
  6. 次の設定で、HTTPS リスナーのデフォルトルールを編集します。
    [認証] で、[OpenID または Amazon Cognito を使用する] を選択します。
    [ID プロバイダー] で、[Amazon Cognito] を選択します。
    [ユーザープール] で、Amazon Cognito コンソールから取得したユーザープール ID を選択します。
    [アプリクライアント] で、Amazon Cognito コンソールから取得したクライアント ID を選択します。
    [認証の詳細設定] を展開します。
    セッションクッキーに名前を付けます。
    セッションタイムアウトを設定します。デフォルト値は 7 日です。
    [スコープ] には、ユーザープールアプリクライアントに設定したスコープをスペースで区切って入力します。ユーザープールの OIDC 設定でスコープを見つけることができます。たとえば、設定内の scopes_supported 値が ["openid","email","phone","profile"] の場合、openid email phone profile と入力します。
    [認証されていないリクエストに対するアクション] はデフォルト値のままにします。
    (オプション) [追加のリクエストパラメータ - オプション] を展開します。このオプションを使用すると、認証時に Cognito などの ID プロバイダーに追加のパラメータを渡すことができます。たとえば、Cognito ユーザープールが独自の ID プロバイダーに Google を使用している場合は、パラメータ {Key: identity_provider, Value: Google} を追加します。このパラメータを使用すると、Cognito Hosted UI をスキップして Google のログインページに直接アクセスできます。許可されている /oauth2/authorize パラメータの詳細については、「エンドポイントを認証する」を参照してください。
  7. 次の設定で、HTTPS リスナーのデフォルトルール編集を続行します。
    [ルーティングアクション][ターゲットグループに転送] を選択し、1 つまたは複数のターゲットグループを選択します。
    (オプション) ユースケースで必要な場合は、[ターゲットグループの固定] で、[ターゲットグループの固定を有効にする] を選択します。
  8. セキュアリスナーの設定を行います。
    [セキュリティポリシー] で、ユースケースに適したセキュリティポリシーを選択します。
    [デフォルトの SSL/TLS サーバー証明書] で、証明書ソースを選択します。
  9. HTTPS リスナーのデフォルトルールに更新を適用するには、[変更を保存] を選択します。

セットアップをテストする

ウェブブラウザで、次の URL のいずれかを入力します。

  • https://load-balancer-dns-name/
  • https://CNAME/

注: load-balancer-dns-name は、Amazon EC2 コンソールからコピーした DNS 名に置き換えます。または、CNAME をカスタムドメインに置き換えます。

URL を入力すると、ユーザープールの Amazon Cognito がホストするウェブ UI にリダイレクトされます。ユーザーがサインインし、ユーザープールがユーザーを認証すると、ユーザーはターゲットにリダイレクトされます。

関連情報

Application Load Balancer の開始

Application Load Balancer の組み込み認証でログインを簡素化する

Application Load Balancer のリスナールール

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

コメントはありません

関連するコンテンツ