0
0

Cloudflare Zero Trust と Amazon Cognito の Single Logout (SLO) について考える

Last updated at Posted at 2024-09-26

セッション管理

以下の記事にある通り、Cloudflare Zero Trust の ID 認証先に Amazon Cognito を OIDC で連携することができます。

その際には、それぞれのユーザセッションはそれぞれの Cookie にて管理されます。

  • Cloudflare Zero Trust
    • CF_Authorization Cookie で管理されます。

  • Amazon Cognito
    • cognitocognito-fl Cookie が使用されます。

考えられるログアウトフロー

それぞれのログアウトエンドポイントにアクセスすることで、それぞれが管理する Cookie を削除できます。

  • Amazon Cognito
    • Amazon Cognito では Allowed sign-out URLs を定義の上で logout_uri パラメータを指定することで、別のログアウトエンドポイントにリダイレクトさせることができます。

以上を踏まえると、以下のようなフローが考えられます。

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 に追加します。

image.png

動作確認

App Launcher https://<your-team-name>.cloudflareaccess.com/ にアクセスして Login ボタンを押すと、Amazon Cognito でログインする選択肢が提示されます。

image.png
image.png
image.png

Amazon Cognito ユーザプールで認証します。

image.png

認証後は、以下の Single Logout 用のブックマークを押すことで、App Launcher ログイン画面 https://<your-team-name>.cloudflareaccess.com/returnTo し、再度 Amazon Cognito ユーザプールでの認証が求められることが確認できます。

これで両方の Cookie を削除できたことがわかります。

image.png
image.png
image.png

参考:再認証時に必要な対話操作を強制する

特定の 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:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0