認証クッキー
Cloudflare Accessでサイトを保護すると、Cloudflareはそのサイトに向かうすべてのHTTPリクエストをチェックし、リクエストに有効なCF_Authorizationクッキーが含まれていることを確認します。リクエストにクッキーが含まれていない場合、Accessはリクエストをブロックします。
CF_Authorizationクッキーには、ユーザーのアイデンティティがJSON Web Token(JWT)の形式で含まれています。Cloudflareは、Cloudflare Accessと設定されたアイデンティティプロバイダーとの間のOAUTHまたはSAML統合を通じて、これらのトークンを安全に作成します。
2つのトークンが生成されます:
-
グローバルセッショントークン: ユーザーがAccessにログインしたときに生成されるトークン。このトークンは、あなたのチームドメイン(例:
https://<your-team-name>.cloudflareaccess.com)にクッキーとして保存され、ユーザーが各アプリケーションにログインする必要がなくなります。 -
アプリケーショントークン: ユーザーがアクセスする各アプリケーションのために生成されるトークン。このトークンは、保護されたドメイン(例:
https://jira.site.com)にクッキーとして保存され、あなたのオリジンでリクエストを検証するために使用されることがあります。
Cloudflare Accessは、単一のセルフホストアプリケーションで複数のドメインを保護および管理することを可能にします。ユーザーが1つのドメインに正常に認証されると、Accessは同じAccessアプリケーション内の別のドメインに移動する際に自動的にCF_Authorizationクッキーを発行します。これにより、ユーザーはマルチドメインアプリケーションに対して一度だけ認証すればよくなります。
5つ以下のドメインを持つAccessアプリケーションの場合、Accessは一連のリダイレクトを通じてすべてのドメインに対してクッキーを事前に設定します。これにより、シングルページアプリケーション(SPA)が、ユーザーが明示的に訪れていないサブドメインからデータを取得できるようになります。ただし、ワイルドカードサブドメインに対しては事前にクッキーを設定できません。なぜなら、どの具体的なサブドメインにリダイレクトするかがわからないからです(ワイルドカードパスは許可されています)。
Accessアプリケーションが5つ以上のドメインを持つ場合、Accessは事前にクッキーを設定しません。クッキーは、ユーザーが各ドメインを訪れるときにのみ発行されます。この制限は、ユーザーエクスペリエンスに影響を与える可能性のあるレイテンシの問題を避けるためです。
Cloudflare Accessは、認証されたユーザーのためにAccessによって生成されたブラウザクッキーに追加できるオプションのセキュリティ設定を提供します。
これらの設定を有効にするには:
-
Zero Trust ↗に移動し、Access > Applicationsを選択します。
-
設定したいアプリケーションを見つけてEditを選択します。
-
Settingsを選択し、Cookie settingsまでスクロールします。
-
希望するクッキー設定を構成します。
-
Save applicationを選択します。
SameSite ↗属性セレクタは、クッキーが定義されたサイトがブラウザでリクエストされているサイトと一致する場合にのみ送信されるように制限します。これにより、クロスサイトリクエストフォージェリ(CSRF) ↗に対する保護が追加されます。
セレクタのオプションは次のとおりです:
- None - クッキーはすべてのコンテキストで送信され、クロスオリジンリクエストも含まれます。
- Lax - クッキーはトップレベルのナビゲーションと、サードパーティのウェブサイトによって開始されたGETリクエストとともに送信されることが許可されます。
- Strict - クッキーはファーストパーティのコンテキストでのみ送信され、サードパーティのウェブサイトによって開始されたリクエストとともには送信されません。
詳細については、Mozillaのドキュメント ↗を参照してください。
特定のアプリケーションの認証クッキーに依存する追加のサイトやアプリケーションがある場合は、SameSite制限を有効にしないでください。
HttpOnlyフラグは、クッキーがクライアント側のスクリプトによってアクセスされるのを防ぎ、クロスサイトスクリプティング(XSS)攻撃の可能性を減らすクッキー属性です。このフラグはデフォルトで有効になっています。
次の場合はHttpOnlyを有効にしないでください:
- SSHやRDPなどのブラウザベースでないツールにAccessアプリケーションを使用している場合。
- Accessによって生成されたユーザーのクッキーにアクセスする必要があるソフトウェアがある場合。
バインディングクッキーは、ユーザーが正常に認証されたときに作成され、Cloudflareと共有されてアイデンティティを確認し、オリジンサーバーに到達する前に削除される追加のクッキーです。バインディングクッキーは、ブラウザをAccessトークンに関連付けます。この関連付けは、オリジンのWebアプリがこのバインディングクッキーを決して見ることがないため、権限トークンが侵害されるのを防ぎます。これにより、セッションハイジャックスタイルの攻撃から保護されます。
次の場合はバインディングクッキーを有効にしないでください:
- SSHやRDPなどのブラウザベースでないツールにAccessアプリケーションを使用している場合。
- アプリケーションドメインで互換性のないCloudflare製品を有効にしている場合。
- アプリケーションに対してWARP認証アイデンティティをオンにしている場合。
クッキーパス属性は、アプリケーションのパスURLをCF_Authorizationクッキーに追加します。有効にすると、example.com/path1にログインしたユーザーは、example.com/path2にアクセスするために再認証する必要があります。無効にすると、CF_Authorizationクッキーはドメインとサブドメインにのみスコープされます。
デフォルトでは、一部のブラウザはプライベートブラウジングモードですべてのサードパーティクッキーをブロックします。これにはCF_Authorizationクッキーも含まれます。プライベートウィンドウでXHRリクエストを機能させるには、ブラウザのトラッキング保護システムからアプリケーションとチームドメインを除外する必要があります。
Accessアプリケーションのためにサードパーティクッキーを有効にするには:
Chrome
- Settings > Privacy and security > Cookies and other site dataに移動します。
- Sites that can always use cookiesの下に、次のURLを追加します:
- Accessアプリケーションのホスト名(例:
https://jira.site.com) https://<your-team-name>.cloudflareaccess.com
- Accessアプリケーションのホスト名(例:
Safari
- Safari > Settings > Privacyに移動します。
- Block all cookiesのチェックを外します。
Firefox
- Settings > Privacy & Securityに移動します。
- Cookies and Site Dataまでスクロールします。
- Manage Exceptionsを選択します。
- AccessアプリケーションのURL(例:
https://jira.site.com)を入力し、Allowを選択します。 https://<your-team-name>.cloudflareaccess.comを入力し、Allowを選択します。- Save Changesを選択します。
Brave
brave://settings/cookiesに移動します。- Sites that can always use cookiesの下に、次のURLを追加します:
- Accessアプリケーションのホスト名(例:
https://jira.site.com) https://<your-team-name>.cloudflareaccess.com
- Accessアプリケーションのホスト名(例: