セッション管理
以下の記事にある通り、Cloudflare Zero Trust の ID 認証先に Amazon Cognito を OIDC で連携することができます。
その際には、それぞれのユーザセッションはそれぞれの Cookie にて管理されます。
- Cloudflare Zero Trust
-
CF_Authorization
Cookie で管理されます。
-
- Amazon Cognito
-
cognito
、cognito-fl
Cookie が使用されます。
-
考えられるログアウトフロー
それぞれのログアウトエンドポイントにアクセスすることで、それぞれが管理する Cookie を削除できます。
- Cloudflare Zero Trust
-
returnTo
パラメータがサポートされているものの、リダイレクト先が制限されています。 - Ref. Cloudflare Access logout page customization / redirect - Zero Trust / Access - Cloudflare Community
-
- Amazon Cognito
- Amazon Cognito では
Allowed sign-out URLs
を定義の上でlogout_uri
パラメータを指定することで、別のログアウトエンドポイントにリダイレクトさせることができます。
- Amazon Cognito では
以上を踏まえると、以下のようなフローが考えられます。
App Launcher への Bookmark 追加
Cloudflare Zero Trust の App Launcher では、ユーザーは単一のダッシュボードからアクセス可能なすべてのアプリケーションを開くことができます。
https://<your-team-name>.cloudflareaccess.com/
そこに以下の手順で、 Cloudflare Zero Trust と Amazon Cognito の双方からログアウトができる Bookmark を追加することで、従業員が容易にログアウトできるようにします。
Application URL
に以下のリンクを設定し、Enable App in App Launcher
を有効にします。
https://<Your-User-Pool-Domain>.auth.<Your-User-Pool-Region>.amazoncognito.com/logout?
client_id=<Your-User-Pool-App-Client>&
logout_uri=https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/logout?returnTo=https://<your-team-name>.cloudflareaccess.com/
Amazon Cognito では https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/logout?returnTo=https://<your-team-name>.cloudflareaccess.com/
を Allowed sign-out URLs
に追加します。
動作確認
App Launcher https://<your-team-name>.cloudflareaccess.com/
にアクセスして Login ボタンを押すと、Amazon Cognito でログインする選択肢が提示されます。
Amazon Cognito ユーザプールで認証します。
認証後は、以下の Single Logout 用のブックマークを押すことで、App Launcher ログイン画面 https://<your-team-name>.cloudflareaccess.com/
に returnTo
し、再度 Amazon Cognito ユーザプールでの認証が求められることが確認できます。
これで両方の Cookie を削除できたことがわかります。
参考:再認証時に必要な対話操作を強制する
特定の IdP に対しては、prompt
オプションによって再認証時に必要な対話操作を強制することで同等のフローを実現する方法もあります。
Amazon Cognito に関しては、そうした prompt
オプションは存在しないようです。
参考:OpenID Connect SLO
今回はそれぞれのプロバイダで用意されているログアウトエンドポイントに、リダイレクトを組み合わせる形の実装となりました。
ただ OpenID Connect (OIDC) の枠組みの中で Single Logout (SLO) の仕組みも標準化されているため、今後は各プロバイダがこうした仕組みをサポートするかを優先的に確認するとよいでしょう。
- OpenID Connect Front-Channel Logout 1.0:
- OpenID Connect Back-Channel Logout: