跳转到内容
搜索文档

授权 Cookie

最后更新 查看 MarkdownAgent 设置

当您使用 Cloudflare Access 保护站点时,Cloudflare 会检查发往该站点的每个 HTTP 请求,以确保该请求包含有效的 CF_Authorization cookie。如果请求不包含该 cookie,Access 将阻止该请求。

Access JWT

CF_Authorization cookie 包含用户身份,采用 JSON Web Token (JWT) 的形式。Cloudflare 通过 Cloudflare Access 与配置的身份提供商之间的 OAuth 或 SAML 集成来安全地创建这些令牌。

Access 根据域生成两个独立的 CF_Authorization 令牌:

  • 全局会话令牌:在用户登录 Access 时生成。此令牌作为 cookie 存储在您的 团队域(例如,https://<your-team-name>.cloudflareaccess.com),并避免用户需要登录每个应用程序。

  • 应用程序令牌:为用户访问的每个应用程序生成。此令牌作为 cookie 存储在受保护的域(例如,https://jira.site.com)上,并可用于在您的源站上验证请求

多域名应用程序

Cloudflare Access 允许您在单个自托管应用程序中保护和管理多个域。在用户成功对一个域进行身份验证后,当他们访问同一 Access 应用程序中的另一个域时,Access 会自动签发 CF_Authorization cookie。这意味着用户只需对多域名应用程序进行一次身份验证。

对于包含五个或更少域的 Access 应用程序,当用户首次进行身份验证时,Access 会通过一系列重定向预先为所有域设置 cookie。这允许单页面应用程序 (SPA) 从其他子域检索数据,而无需用户单独访问每个子域。通配符子域(例如 *.example.com)无法接收预先设置的 cookie,因为 Access 不知道重定向到哪个具体子域。支持通配符路径。

对于包含五个以上域的 Access 应用程序,Access 不会预先设置 cookie。相反,会在用户访问每个域时签发 cookie。这避免了在身份验证期间通过大量域进行重定向而导致的延迟。

以下 Access cookie 对 Access 功能至关重要。标记为必需的 cookie 无法选择退出。以下 cookie 不用于跟踪或分析。

CF_Authorization(团队域)

详细信息 过期时间 HttpOnly SameSite 是否必需?
cloudflareaccess.com 团队域上设置的 JSON Web Token (JWT),包含用户的身份并允许 Access 执行单点登录 (SSO)
查看如果设置了,则遵循全局会话时长

如果没有,则遵循应用程序会话时长

如果两者都未设置,则默认值为 24 小时。
None

CF_Authorization(Access 应用程序域)

详细信息 过期时间 HttpOnly SameSite 是否必需?
在受 Access 保护的域上设置的 JSON Web Token (JWT),允许 Access 确认用户已通过身份验证且被授权访问源站
查看如果设置了,则遵循策略会话时长

如果没有,则遵循应用程序会话时长

如果两者都未设置,则默认值为 24 小时。
管理员选择(默认:None) 管理员选择(默认:None)

CF_Binding

详细信息 过期时间 HttpOnly SameSite 是否必需?
请参阅绑定(binding)cookie
查看如果设置了,则遵循策略会话时长

如果没有,则遵循应用程序会话时长

如果两者都未设置,则默认值为 24 小时。
None

CF_Session

详细信息 过期时间 HttpOnly SameSite 是否必需?
cloudflareaccess.com 团队域上使用的 CSRF 令牌 4 小时 None

CF_AppSession

详细信息 过期时间 HttpOnly SameSite 是否必需?
在每个应用程序域上使用的 CSRF 令牌,范围限于 Access 后面的单个应用程序 24 小时 None

CF_Device

详细信息 过期时间 HttpOnly SameSite 是否必需?
cloudflareaccess.com 团队域上设置的 Cookie,用于防止滥用一次性 PIN 码多因素身份验证流程 30 天 Strict

Cloudflare Access 提供了可选的安全设置,这些设置可以添加到 Access 为已通过身份验证的用户生成的浏览器 cookie 中。

若要启用这些设置:

  1. Cloudflare 仪表板中,转到 Zero Trust > Access controls(访问控制)> Applications(应用程序)

  2. 找到您要配置的应用程序并选择 Configure(配置)

  3. 选择 **Advanced settings(高级设置)**并向下滚动到 Cookie settings(Cookie 设置)

  4. 配置所需的 cookie 设置。

  5. 选择 Save(保存)

SameSite 属性

SameSite 属性选择器限制了仅当 cookie 定义的站点与浏览器中请求的站点匹配时才发送 cookie。这增加了针对跨站请求伪造 (CSRF) 的防护。

选择器选项包括:

  • None - Cookies 将在所有上下文中发送,包括跨源请求。
  • Lax - 允许在顶级导航中发送 Cookie,并将与第三方网站发起的 GET 请求一起发送。
  • Strict - Cookies 仅在第一方上下文中发送,不会与第三方网站发起的请求一起发送。

有关详细信息,请参阅 Mozilla 文档

何时不使用 SameSite

如果您有其他站点或应用程序依赖于特定应用程序的授权 cookie,请不要启用 SameSite 限制。

HttpOnly

HttpOnly 标志是一个 cookie 属性,可防止任何客户端脚本访问该 cookie,从而降低跨站脚本 (XSS) 攻击的可能性。此标志默认启用。

何时不使用 HttpOnly

在以下情况下,请不要启用 HttpOnly

  • 您正在将 Access 应用程序用于非基于浏览器的工具(例如 SSH 或 RDP)。
  • 您拥有的软件依赖于能够访问 Access 生成的用户 cookie。

绑定 cookie(CF_Binding)是在用户成功进行身份验证时签发的可选 cookie。绑定 cookie 由用户的浏览器发送,并与特定应用程序的 CF_Authorization cookie 绑定。此 cookie 会在 Cloudflare 的网络中被剥离,绝不会转发到源站服务器。

CF_Authorization cookie 在没有关联绑定 cookie 的情况下无法使用,这可以防止攻击者重用被盗的 CF_Authorization cookie。如果请求到达 Cloudflare 网络时包含有效的 CF_Authorization cookie 但没有预期的绑定 cookie,Cloudflare 将拒绝该请求。

在以下情况下,请不要启用绑定 Cookie:

Cookie 路径属性将应用程序的路径 URL 添加到 CF_Authorization cookie 中。启用后,登录 example.com/path1 的用户必须重新进行身份验证才能访问 example.com/path2。禁用后,CF_Authorization cookie 的范围仅限于域和子域。

默认情况下,某些浏览器在无痕/隐私浏览模式下会阻止所有第三方 cookie,包括 CF_Authorization cookie。为了让 XHR 请求在隐私窗口中正常工作,您需要将您的应用程序和团队域排除在浏览器的跟踪保护系统之外。

若要为 Access 应用程序启用第三方 cookie:

Chrome

  1. 转到 Settings(设置)> Privacy and security(隐私和安全)> Cookies and other site data(Cookie 及其他网站数据)
  2. 在 **Sites that can always use cookies(始终允许使用 Cookie 的网站)**下,添加以下 URL:
    • 您的 Access 应用程序的主机名(例如 https://jira.site.com
    • https://<your-team-name>.cloudflareaccess.com

Safari

  1. 转到 Safari > Settings(设置)> Privacy(隐私)
  2. 取消选中 Block all cookies(阻止所有 Cookie)

Firefox

  1. 转到 Settings(设置)> Privacy & Security(隐私与安全)
  2. 向下滚动到 Cookies and Site Data(Cookie 和网站数据)
  3. 选择 Manage Exceptions...(管理例外...)
  4. 输入您的 Access 应用程序的 URL(例如 https://jira.site.com)并选择 Allow(允许)
  5. 输入 https://<your-team-name>.cloudflareaccess.com 并选择 Allow(允许)
  6. 选择 Save Changes(保存更改)

Brave

  1. 转到 brave://settings/cookies
  2. 在 **Sites that can always use cookies(始终允许使用 Cookie 的网站)**下,添加以下 URL:
    • 您的 Access 应用程序的主机名(例如 https://jira.site.com
    • https://<your-team-name>.cloudflareaccess.com

这篇文档对您有帮助吗?