セッション管理
ユーザーセッションは、ユーザーが再認証せずにAccessアプリケーションにアクセスできる期間を決定します。
ユーザーがAccessによって保護されたアプリケーションにログインすると、AccessはそのユーザーのアイデンティティをあなたのAccessポリシーに対して検証し、2つの署名されたJSON Webトークン(JWT)を生成します。
| トークン | 説明 | 有効期限 | ストレージ |
|---|---|---|---|
| グローバルセッショントークン | IdPからユーザーのアイデンティティを保存し、すべてのAccessアプリケーションに対してシングルサインオン(SSO)機能を提供します。 | グローバルセッションの期間 | あなたのCloudflare チームドメイン |
| アプリケーショントークン | ユーザーが特定のAccessアプリケーションにアクセスできるようにします。 | ポリシーセッションの期間(設定されている場合)、そうでなければアプリケーションセッションの期間 | Accessアプリケーションによって保護されたホスト名 |
ユーザーはアプリケーショントークンのライフサイクル全体にわたってアプリケーションにアクセスできます。アプリケーショントークンが期限切れになると、グローバルトークンがまだ有効であり(かつユーザーのアイデンティティがあなたのAccessポリシーを通過する場合)、Cloudflareは自動的に新しいアプリケーショントークンを発行します。グローバルトークンも期限切れの場合、ユーザーはIdPで再認証を求められます。
グローバルトークンの有効期限は通常、アプリケーショントークンの有効期限と同じかそれ以上に設定されます。より長いグローバルトークンを設定することで、ユーザーセッションを長く保つより安全な方法が提供されます。なぜなら、グローバルトークンはアプリケーションに直接アクセスするために使用できないからです。
15分から1ヶ月の間でグローバルセッションの期間を設定できます。
- Zero Trust ↗に移動し、設定 > 認証に進みます。
- グローバルセッションのタイムアウトの下で、編集を選択します。
- ドロップダウンメニューから希望のタイムアウト期間を選択します。
この期間が経過した後、ユーザーはIdPで再認証を求められます。
自己ホスト型およびプライベートAccessアプリケーションのためにアプリケーションセッションの期間を設定できます。利用可能なセッション期間は、即時タイムアウトから1ヶ月までです。デフォルトは24時間です。
- Zero Trust ↗に移動し、Access > アプリケーションに進みます。
- 設定したいアプリケーションを見つけて編集を選択します。
- 概要タブで、ドロップダウンメニューからセッションの期間を選択します。
この期間が経過するとアプリケーショントークンは期限切れになります(ポリシーセッションの期間を設定していない限り)。
Accessのセッション期間はSaaSアプリの入り口を制御するだけであり、AccessはユーザーがSaaSアプリ自体にどれだけ長く留まるかを制御しません。たとえば、ユーザーがSaaSアプリからログアウトし、その後再度アクセスした場合、有効なAccessアプリケーショントークンがあれば、再度ログインすることなく再認証が可能です。SaaSアプリは、アプリ内でのユーザーセッションを管理する独自の認証クッキーを発行します。
即時タイムアウトから1ヶ月までの範囲でポリシーセッションの期間を設定できます。ポリシーセッションの期間はアプリケーションセッションの期間よりも優先されます。
- Zero Trust ↗に移動し、Access > アプリケーションに進みます。
- 設定したいアプリケーションを見つけて編集を選択します。
- ポリシータブに移動し、任意のポリシーの設定を選択します。
- ドロップダウンメニューからセッションの期間を選択します。
このポリシーに一致するユーザーには、この有効期限を持つアプリケーショントークンが発行されます。
Accessは、ユーザーセッションを取り消すための2つのオプションを提供します:アプリケーションごととユーザーごとです。
特定のアプリケーションのすべてのアクティブセッションを即座に終了するには:
-
Zero Trust ↗に移動し、Access > アプリケーションに進みます。
-
アクティブセッションを取り消したいアプリケーションを見つけて編集を選択します。
-
概要タブで、既存のトークンを取り消すを選択します。
ポリシーのルールに変更がない限り、ユーザーはアイデンティティプロバイダーでのプロフィールがまだアクティブであれば、新しいセッションを開始できます。
Accessは、アカウント内のすべてのアプリケーションで単一のユーザーセッションを即座に取り消すことができます。ただし、ユーザーのアイデンティティプロフィールがまだアクティブであれば、新しいセッションを生成できます。
ユーザーのアクセスを永久に取り消したい場合:
-
アイデンティティプロバイダーでそのアカウントを無効にして、認証できないようにします。
-
Zero Trust ↗に移動し、My Team > Usersに進みます。
-
取り消したいユーザーの横にあるチェックボックスを選択します。
-
アクション > アクセスを取り消すを選択します。
ユーザーはもはやAccessによって保護されたアプリケーションにログインできなくなります。ユーザーは、アカウントからユーザーを削除するまで、あなたのシートサブスクリプションにカウントされ続けます。
管理者がユーザーのCloudflare Accessトークンを取り消すと、そのユーザーは最大1分間再度ログインできなくなります。再度ログインしようとすると、Cloudflare Accessはエラーを表示します。
Accessからログアウトするには、エンドユーザーは次のいずれかのURLにアクセスできます:
<your-application-domain>/cdn-cgi/access/logout<your-team-name>.cloudflareaccess.com/cdn-cgi/access/logout
このアクションは、すべてのアプリケーションでユーザーのセッションを取り消します。Accessは即座にユーザーのブラウザから認証クッキーをクリアし、以前に発行されたすべてのトークンは20〜30秒で受け入れられなくなります。これら2つのURLの唯一の違いは、認証クッキーが削除されるドメインです。たとえば、<your-application-domain>/cdn-cgi/access/logoutにアクセスすると、アプリケーションクッキーが削除され、ログアウトアクションがより瞬時に感じられます。
これらのURLを使用して、アプリケーション内にカスタムログアウトボタンやリンクを作成できます。
AJAXやシングルページアプリケーションに大きく依存するページは、期限切れのAccessトークンによりサブリクエストをブロックすることができ、ユーザーに再認証を促すことはありません。
Accessを構成して、期限切れのセッショントークンに対してサブリクエストで401レスポンスを提供することができます。このレスポンスコードを使用して、ページのリフレッシュを強制するか、ユーザーにセッションが期限切れであることを表示するメッセージを表示することをお勧めします。
期限切れのセッションに対して401を受け取るには、すべてのAJAXリクエストに次のヘッダーを追加します:
X-Requested-With: XMLHttpRequest