HAYASHIER.COM - Private Page
ELB(ALB) で認証機能 (OIDC [Google 認証], Cognito)

OIDC

Google 認証で Gmail のメールアドレスによるログイン

  1. Google APIsへアクセス https://console.developers.google.com/apis/credentials
    • “認証情報を作成” から “OAuthクライアントID” を選択、承認済みのリダイレクト URI は、https://<domain name>/oauth2/idpresponse
    • 作成されるクライアント ID とクライアントのシークレットはコピーして控えておく。
  2. ALB のリスナールール編集
    • ALB のリスナールール編集で、IF パスが / , THEN 認証を OIDC として、以下の curl コマンドの実行結果に対応させて値を入力。(発行者はissuer,認証エンドポイントはauthorization_endpoint,トークンエンドポイントはtoken_endpoint,ユーザー情報エンドポイントはuserinfo_endpoint)
    • クライアント IDとクライアントのシークレットはGoogle APIsで認証情報作成時に控えておいた値
$ curl https://accounts.google.com/.well-known/openid-configuration
{
 "issuer": "https://accounts.google.com",
 "authorization_endpoint": "https://accounts.google.com/o/oauth2/v2/auth",
 "token_endpoint": "https://www.googleapis.com/oauth2/v4/token",
 "userinfo_endpoint": "https://www.googleapis.com/oauth2/v3/userinfo",
 "revocation_endpoint": "https://oauth2.googleapis.com/revoke",
 :

上記仕組みのフローの詳細は、こちらの URL より参照 https://www.exampleloadbalancer.com/auth_detail.html

Cognito

ユーザープール

フェデレーテッドアイデンティティ

“Your Cognito identities require access to your resources”に対し、“許可”を選択

ALB のリスナールール編集

ALB のリスナールール編集で、IF パスが / , THEN 認証を Amazon Cognito として、Cognito ユーザープール(Cognitoのユーザープールの画面で、サイドメニューの全般設定からプール ID の項目)。アプリクライアント(Cognitoのユーザープールの画面で、サイドメニューのアプリクライアントの画面の ID の項目)の値を入力。

実際のテストは、Congito のユーザープールでユーザーを作成しておいてテスト。

参考

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/listener-authenticate-users.html https://aws.amazon.com/blogs/aws/built-in-authentication-in-alb/ https://dev.classmethod.jp/cloud/add-google-authenticate-your-webapp-on-alb/ https://dev.classmethod.jp/cloud/alb-cognito-user-pool/