Cloudflare Access 是一款访问控制工具,能确保访问请求都经过严格的身份验证。通常,这个验证过程是交互式的,需要用户通过浏览器登录。但如果需要让一个脚本、自动化任务或后端服务来访问这些受保护的资源,应该怎么办呢?
这时,服务令牌(Service Token) 就派上了用场。它为非交互式环境提供了认证方式。
什么是服务令牌?
服务令牌是一组专为应用程序或脚本设计的凭证,允许它们在没有用户直接参与的情况下,向受 Cloudflare Access 保护的资源进行身份验证。每个服务令牌都包含一个 客户端 ID(Client ID) 和一个 客户端密钥(Client Secret)。
通过在 HTTP 请求头中包含这两个值,服务可以证明自己的身份,并通过 Access 策略的验证。
如何创建服务令牌
- 登录到 Cloudflare Zero Trust 管理面板。
- 在左侧导航栏中,找到 Access -> 服务身份验证。
- 点击 创建服务令牌 按钮。
- 为服务令牌命名,例如
my-automation-script
。 - 点击 生成令牌。
创建成功后,会显示 Client ID 和 Client Secret。务必立即复制并妥善保管 Client Secret,因为它只会出现一次。
如何使用服务令牌
要在应用程序或脚本中使用服务令牌,只需在发往受保护资源的 HTTP 请求中添加两个特定的请求头:
CF-Access-Client-Id
: 服务令牌的 Client ID。CF-Access-Client-Secret
: 服务令牌的 Client Secret。
下面是一个使用 curl
的简单示例:
|
|
当 Cloudflare Access 收到这个请求时,它会验证这两个头信息。如果凭证有效,它将允许请求通过,否则将拒绝访问。
配置 Access 策略
仅仅创建了服务令牌还不够,下面创建一个 Access 策略,明确授权该令牌可以访问哪些资源。
- 在 Zero Trust 管理面板中,转到 Access -> 应用程序。
- 选择想要授权访问的应用程序,或创建一个新的。
- 在应用程序的策略配置中,点击 创建新策略。
- 为策略命名,例如
Allow Service Token Access
。 - 操作 一栏一定要选择 Service Auth。
- 在 添加规则 部分:
- 选择器: 选择 Service Token。
- 值: 选择刚才创建的服务令牌。
- 保存策略和应用程序设置。
通过这种方式,只有持有该特定服务令牌的请求才能匹配此策略规则,从而获得访问权限。