【ALB認証】認証したユーザーをログアウトさせるには

AWS運用自動化サービス「Cloud Automator」

こんにちは、技術4課の城です。
以前、ALB認証の検証ブログを書きましたが、認証したユーザーをどのようにログアウトさせるかについて調べてみました。

ログアウトさせるにはどうするか?

ドキュメントを確認してみたところ、下記の記載がありました。

アプリケーションで認証済みユーザーをログアウトさせる必要がある場合、認証セッション Cookie の有効期限を -1 に設定し、クライアントを IdP ログアウトエンドポイントにリダイレクト (IdP でサポートされている場合) する必要があります。

Application Load Balancer を使用してユーザーを認証する -認証のログアウトとセッションのタイムアウト

認証セッションCookie

認証セッションCookieはデフォルトだと下記のCookieです。

  • AWSELBAuthSessionCookie-0
  • AWSELBAuthSessionCookie-1

ALBのリスナーのルール設定からセッションCookie名を変更できます。
またセッションタイムアウト値もこちらから変更可能です。(詳細後述します)

対象のALBの[リスナー]タブにて、HTTPSリスナーの[ルールの表示/編集]をクリック

上部タブの[編集アイコン]をクリックし、ルールの[編集アイコン]を順にクリック

認証アクションの[編集アイコン]をクリック

[詳細設定]をクリック

赤枠部分がセッションCookie名、セッションタイムアウト値となります。

IdP ログアウトエンドポイント

IdP ログアウトエンドポイントとは??となってしまったので探してみたところ、それらしきドキュメントが見つかりました。
リクエスト例がありましたので、「例 #1: ログアウトしてクライアントにリダイレクトして戻る」で実施します。

ログアウトエンドポイント

なお、各パラメータについては下記となります。

  • client_id
    Cognitoユーザープールに設定しているアプリクライアントのIDです。

  • logout_uri
    アプリクライアントに設定したサインアウトURLを指定します。
    ログアウトした後にリダイレクトさせるURLを指定します。

ログアウトしてみる

Cookieの有効期限を変更する必要があるので、下記のChrome拡張機能を利用しました。
EditThisCookie

まずはログインします。

Cookieを確認します。
EditThisCookieのアイコンをクリックすると、↓のように表示されます。

EditThisCookieではCookieをエクスポート、インポートすることが可能です。
後のテストのためにCookie情報をエクスポートしておきます。

[エクスポートアイコン]をクリックすると、クリップボードにjsonでコピーされます。
メモ帳にでも貼り付けておきましょう。

EditThisCookieを利用して認証セッションCookie 両方の有効期限を -1に変更します。

ログアウトエンドポイントにパラメーターを指定してアクセスさせます。
ブラウザのURL欄に指定したのは下記です。

ログアウトできました。

セッションタイムアウト値の設定について

ALB認証では ドキュメントにも記載のとおり、ログアウトしたとしても一度認証したユーザーのセッションCookieを再利用することが可能なようです。

実際に試してみます。

EditThisCookieの[インポートアイコン]をクリック

先ほどエクスポートしたCookie情報を貼り付けてインポートします。

認証セッションCookieが設定されているので、ページにアクセスすると、ALBの認証画面が表示されてほしいところですが、Webページが表示されます。

ドキュメントにも下記の記載がありますが、必要最低限の長さで設定する必要がありそうです。

ユーザーが削除された Cookie を再利用しないようにするには、アクセストークンの有効期限を問題のない範囲でできるだけ短く設定することをお勧めします。

さいごに

認証セッションCookieが再利用可能なため、実際にはセッションタイムアウト値を適切に設定することが重要な点について明確に確認できました。

どなたかの助けになれば幸いです。

AWS運用自動化サービス「Cloud Automator」