はじめに
AWS Cognito を利用する際、ログアウト処理の適切な設定は重要です。
特に logout_url
と Allowed Logout URLs
が一致していないと、意図したログアウト動作ができないことがあります。
本記事では、Cognito のログアウト設定を確認する手順や、AWS マネジメントコンソール・CLI での確認方法を紹介します。
書こうと思ったきっかけ
Cognito を利用した認証機能を実装する中で、ログアウト後のリダイレクト先の設定に問題が発生しました。
特に logout_url
が Allowed Logout URLs
に登録されていないとログアウト時にエラーとなることがありました。
そこで、ログアウト設定の確認手順を整理し、環境変数や AWS マネコン側でどのように設定すべきかを明確にするため、本記事をまとめることにしました。
確認手順について
AWS マネジメントコンソールでの確認
- AWS マネジメントコンソールにログイン
- Cognito コンソール にアクセス
-
ユーザープールを選択
- 該当のユーザープールを選択する
-
アプリ統合の設定
- 左のメニューから「アプリ統合」を開く
- 「アプリクライアントの設定」セクションを確認
-
Allowed Logout URLs の確認
- 「サインアウトURL」(Allowed Logout URLs)の項目を確認し、
logout_url
と比較 -
http
/https
の違いや末尾の/
の有無にも注意
- 「サインアウトURL」(Allowed Logout URLs)の項目を確認し、
実際の確認画面
CLIでの確認方法
AWS CLI を使用して Allowed Logout URLs
を取得することも可能です。
aws cognito-idp describe-user-pool-client \
--user-pool-id <USER_POOL_ID> \
--client-id <CLIENT_ID> \
--query "UserPoolClient.LogoutURLs"
これにより、Cognito に登録されている Allowed Logout URLs
を取得できるので、logout_url
と比較してください。
実際の確認画面
logout_url を確認する方法
logout_url
がどこで設定されているかにより確認方法が異なります。
フロントエンドのコードで確認
アプリケーションのログアウト処理を実装している部分に logout_url
が記述されている可能性があります。
const logout_url = `https://yourdomain.auth.<region>.amazoncognito.com/logout?client_id=<CLIENT_ID>&logout_uri=https://yourapp.com/logout`;
または、環境変数 (.env
) に設定されていることもあります。
NEXT_PUBLIC_COGNITO_LOGOUT_URL=https://yourdomain.auth.<region>.amazoncognito.com/logout
バックエンド(API)の設定を確認
バックエンドでログアウト処理 (logout_url
) を設定している場合、環境変数や設定ファイルに記述されている可能性があります。
export LOGOUT_URL="https://yourdomain.auth.<region>.amazoncognito.com/logout?client_id=<CLIENT_ID>&logout_uri=https://yourapp.com/logout"
または設定ファイル (config.py
, .env
, settings.json
など) に記載されている可能性があります。
LOGOUT_URL = "https://yourdomain.auth.<region>.amazoncognito.com/logout?client_id=<CLIENT_ID>&logout_uri=https://yourapp.com/logout"
Cognitoのアプリ統合設定を確認
Cognito の「アプリ統合」設定に logout_url
を設定している場合、AWS マネジメントコンソールから確認できます。
確認手順
- AWS マネジメントコンソールにログイン
- Cognito → ユーザープールを開く
- 「アプリ統合」 → 「アプリクライアントの設定」へ移動
- 「サインアウトURL」(Allowed Logout URLs) を確認
AWS CLI で確認
aws cognito-idp describe-user-pool-client \
--user-pool-id <USER_POOL_ID> \
--client-id <CLIENT_ID> \
--query "UserPoolClient.LogoutURLs"
Allowed Logout URLs と logout_url を一致させる必要がある
理由
Cognito のログアウト処理では、ユーザーがログアウト後にリダイレクトされるURLを logout_uri
(または logout_url
)として指定します。
このURLが Cognito の Allowed Logout URLs
に登録されていないと、ログアウト時にエラーが発生します。
対処方法
✅ AWS マネジメントコンソールでの設定手順
- AWS マネジメントコンソールにログイン
- Cognito > ユーザープール > 対象のユーザープールを選択
- 「アプリ統合」 > 「アプリクライアントの設定」
- 「サインアウトURL」(Allowed Logout URLs) に
logout_url
を追加 - 保存して設定を反映
✅ CLIで設定を確認・更新
確認
aws cognito-idp describe-user-pool-client \
--user-pool-id <USER_POOL_ID> \
--client-id <CLIENT_ID> \
--query "UserPoolClient.LogoutURLs"
追加・更新
aws cognito-idp update-user-pool-client \
--user-pool-id <USER_POOL_ID> \
--client-id <CLIENT_ID> \
--logout-urls "https://yourapp.com/logout"
.env
側か、AWSのマネコン側どちらで変更すべき?
.env
を変更すべきケース
-
.env
に設定されているlogout_url
が Cognito のAllowed Logout URLs
に登録済みの場合。 - フロントエンドやバックエンドのリダイレクト先を変更したい場合。
✅ 変更方法
LOGOUT_URL="https://yourapp.com/logout"
AWS マネコン側を変更すべきケース
-
.env
のlogout_url
を変えたくない場合(他の環境と統一したい)。 - 複数の
logout_url
を許可したい場合(例: 本番用と開発用を両方登録)。 - 現在の
logout_url
が Cognito 側に登録されていない場合。
✅ 変更手順(AWS マネコン)
- AWS マネジメントコンソールにログイン
- Cognito → ユーザープール → 該当のユーザープールを選択
- 「アプリ統合」 > 「アプリクライアントの設定」
- 「サインアウトURL」(Allowed Logout URLs) に
.env
のlogout_url
を追加 - 保存して適用
まとめ
logout_url
を変えても問題ないなら.env
を Cognito のAllowed Logout URLs
に合わせるlogout_url
を変えたくないなら Cognito 側のAllowed Logout URLs
に.env
のlogout_url
を追加する- 迷ったら、まず Cognito 側の
Allowed Logout URLs
に.env
のlogout_url
を追加してみるのが安全
これで、Cognito のログアウトURL設定を適切に管理できます!