Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Amazon Cognito ユーザープール経由でユーザーを認証するように Application Load Balancer を設定する方法を教えてください。
Application Load Balancer を Amazon Cognito ユーザープールと統合してユーザー認証を行いたいと思っています。
簡単な説明
Application Load Balancer を Amazon Cognito ユーザープールと統合すると、ユーザーを管理および認証することができます。Application Load Balancer と Amazon Cognito ユーザープールを使用してユーザー認証をセットアップするには、次の手順を実行します。
- Application Load Balancer を作成します。
- Application Load Balancer の DNS 名を取得します。
- Amazon Cognito ユーザープールを作成して設定します。
- Application Load Balancer を設定します。
- セットアップをテストします。
解決策
Application Load Balancer を作成する
注: Application Load Balancer を設定済みの場合は、次のセクションに進んでください。
Application Load Balancer を作成するには、次の手順を実行します。
注: HTTPS リスナーのみが、authenticate-cognito および authenticate-oidc ルールアクションタイプをサポートします。
Application Load Balancer の DNS 名を取得する
Application Load Balancer の DNS 名を取得するには、次の手順を実行します。
- Amazon Elastic Compute Cloud (Amazon EC2) コンソールを開きます。
- ナビゲーションペインの [ロードバランシング] で、[ロードバランサー] を選択します。
- Application Load Balancer を選択します。
- [詳細] タブで、ロードバランサーの DNS 名をコピーして保存します。この DNS 名を使用して、Application Load Balancer のエンドポイント URL へのアクセスをテストします。
Amazon Cognito ユーザープールを作成して設定する
Amazon Cognito ユーザープールを作成して設定するには、次のステップを実行します。
- アプリクライアントで Amazon Cognito ユーザープールを作成します。アプリクライアントを設定するときに、[クライアントシークレットを生成] ラジオボタンを選択します。詳細については、「Amazon Cognito を使用するための準備」を参照してください。
注: ユーザープールを作成するときに、本番環境に必要な設定を構成します。ユーザープールを作成した後は、一部のユーザープール設定を変更できません。たとえば、ユーザー登録に必須の標準属性は変更できません。 - Amazon Cognito コンソールを開きます。
- ナビゲーションペインで [ユーザープール] を選択し、お使いのユーザープールを選択します。ユーザープール ID をコピーして保存します。この ID を使用して Application Load Balancer をユーザー認証用に設定します。
- ユーザープールの [アプリ統合] タブを選択し、ユーザープールのドメインを追加します。
- ユーザープールの [アプリ統合] タブから、[アプリクライアントと分析] セクションに移動します。その後、アプリクライアントを選択します。
- アプリクライアントページの [アプリクライアント情報] で、クライアント ID をコピーして保存します。この ID を使用して Application Load Balancer をユーザー認証用に設定します。
- [ホストされた UI] セクションから [編集] を選択します。
- [コールバック 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 をカスタムドメインに置き換えます。 - [サインアウト URL の追加] を選択し、ユーザーがサインアウトした後にリダイレクトする URL を入力します。リダイレクトをテストするには、https://example.com/ など、任意の有効な URL を入力します。
- [ID プロバイダー] で、[Cognito ユーザープール] チェックボックスを選択します。
- [OAuth 2.0 の付与タイプ] で、[認証コード付与] を選択します。ユースケースに必要な、他の OAuth 付与タイプを選択します。
- [OpenID Connect のスコープ] で、[OpenID] チェックボックスを選択します。OpenID スコープが ID トークンを返します。ユースケースに必要な、他の OpenID Connect (OIDC) スコープを選択します。
- [変更を保存] を選択します。
詳細については、「ユーザープールとアプリクライアント構成を更新する」および「サードパーティ経由のユーザープールサインインを追加する」を参照してください。
Application Load Balancer を設定する
Application Load Balancer を設定するには、次の手順を実行します。
- Amazon EC2 コンソールを開きます。
- ナビゲーションペインの [ロードバランシング] で、[ロードバランサー] を選択します。
- Application Load Balancer を選択します。
- [リスナーとルール] タブで HTTPS プロトコルを選択し、[ルールを管理]、[ルールを編集] の順番に選択します。
- [リスナールール] セクションで、更新対象のデフォルトルールを選択し、[アクション]、[ルールを編集] の順番に選択します。
- 次の設定で、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 パラメータの詳細については、「エンドポイントを認証する」を参照してください。 - 次の設定で、HTTPS リスナーのデフォルトルール編集を続行します。
[ルーティングアクション] で [ターゲットグループに転送] を選択し、1 つまたは複数のターゲットグループを選択します。
(オプション) ユースケースで必要な場合は、[ターゲットグループの固定] で、[ターゲットグループの固定を有効にする] を選択します。 - セキュアリスナーの設定を行います。
[セキュリティポリシー] で、ユースケースに適したセキュリティポリシーを選択します。
[デフォルトの SSL/TLS サーバー証明書] で、証明書ソースを選択します。 - HTTPS リスナーのデフォルトルールに更新を適用するには、[変更を保存] を選択します。
セットアップをテストする
ウェブブラウザで、次の URL のいずれかを入力します。
- https://load-balancer-dns-name/
- https://CNAME/
注: load-balancer-dns-name は、Amazon EC2 コンソールからコピーした DNS 名に置き換えます。または、CNAME をカスタムドメインに置き換えます。
URL を入力すると、ユーザープールの Amazon Cognito がホストするウェブ UI にリダイレクトされます。ユーザーがサインインし、ユーザープールがユーザーを認証すると、ユーザーはターゲットにリダイレクトされます。
関連情報
Application Load Balancer の組み込み認証でログインを簡素化する

関連するコンテンツ
- 質問済み 6ヶ月前lg...
- 質問済み 2年前lg...