跳转到内容
搜索文档

在 Windows 登录前连接 Cloudflare One Client

最后更新 查看 MarkdownAgent 设置

Feature availability

Client modes Zero Trust plans
  • 流量和 DNS 模式
  • 仅 DNS 模式
  • 仅流量模式
  • 本地代理模式
所有计划
系统 可用性 最低 WARP 版本
Windows 2025.6.1400.0
macOS
Linux
iOS
Android
ChromeOS

借助 Cloudflare Zero Trust,您可以使用本地 Active Directory(或类似)服务器来验证远程用户的 Windows 登录凭据。在用户首次输入其 Windows 登录信息之前,Cloudflare One Client(前身为 WARP)将使用服务令牌建立连接。此初始连接不与用户身份关联。用户完成 Windows 登录后,Cloudflare One Client 将切换到基于身份的会话,并将用户注册应用于未来的所有登录。

前提条件

1. 创建服务令牌

  1. Cloudflare 仪表板中,前往 Zero Trust > Access controls(访问控制) > Service credentials(服务凭据) > Service Tokens(服务令牌)

  2. 选择 Create Service Token(创建服务令牌)

  3. 为服务令牌命名。该名称便于您在日志中识别与令牌相关的事件,并可单独撤销令牌。

  4. 选择 Service Token Duration(服务令牌有效期)。这将设置令牌的到期日期。

  5. 选择 Generate token(生成令牌)。您将看到为服务令牌生成的 Client ID 和 Client Secret,以及各自的请求头。

  6. 复制 Client Secret。

  1. Access Service Tokens 端点发出 POST 请求:

    Required API token permissions

    At least one of the following token permissions is required:
    • Access: Service Tokens Write
    Create a service tokenbash
    curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/service_tokens" \
    	--request POST \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"name": "CI/CD token",
    		"duration": "8760h"
    	}'
  2. 复制响应中返回的 client_idclient_secret 值。

    Responsejson
    "result": {
    	"client_id": "88bf3b6d86161464f6509f7219099e57.access",
    	"client_secret": "bdd31cbc4dec990953e39163fbbb194c93313ca9f0a6e420346af9d326b1d2a5",
    	"created_at": "2025-09-25T22:26:26Z",
    	"expires_at": "2026-09-25T22:26:26Z",
    	"id": "3537a672-e4d8-4d89-aab9-26cb622918a1",
    	"name": "CI/CD token",
    	"updated_at": "2025-09-25T22:26:26Z",
    	"duration": "8760h",
    	"client_secret_version": 1
    }
  1. 向您的 cloudflare_api_token 添加以下权限:

    • Access: Service Tokens Write
  2. 配置 cloudflare_zero_trust_access_service_token 资源:

    resource "cloudflare_zero_trust_access_service_token" "example_service_token" {
    	account_id = var.cloudflare_account_id
    	name       = "Example service token"
    	duration  = "8760h"
    
    	lifecycle {
    		create_before_destroy = true
    	}
    }
  3. 获取服务令牌的 Client ID 和 Client Secret:

    示例:输出到 CLI

    1. 将 Client ID 和 Client Secret 输出到 Terraform 状态文件:
      output "example_service_token_client_id" {
      	value     = cloudflare_zero_trust_access_service_token.example_service_token.client_id
      }
      
      output "example_service_token_client_secret" {
      	value     = cloudflare_zero_trust_access_service_token.example_service_token.client_secret
      	sensitive = true
      }
    2. 应用配置:
      terraform apply
    3. 读取 Client ID 和 Client Secret:
      terraform output -raw example_service_token_client_id
      terraform output -raw example_service_token_client_secret

    示例:存储在 HashiCorp Vault 中

    	resource "vault_generic_secret" "example_service_token" {
    		path         = "kv/cloudflare/example_service_token"
    
    		data_json = jsonencode({
    			"CLIENT_ID"     = cloudflare_access_service_token.example_service_token.client_id
    			"CLIENT_SECRET" = cloudflare_access_service_token.example_service_token.client_secret
    		})
    	}

2. 创建设备注册策略

在您的设备注册权限中,创建以下策略:

Rule Action(规则操作) Rule type(规则类型) Selector(选择器) Value(值)
Service Auth(服务身份验证) Include(包含) Service Token(服务令牌) <TOKEN-NAME>

2. (可选)在预登录期间限制访问

通过服务令牌注册的设备由电子邮件地址 non_identity@<team-name>.cloudflareaccess.com 识别。使用此电子邮件地址,您可以在预登录状态期间应用特定的设备配置文件设置Gateway 网络策略。例如,您可以仅提供完成 Windows 登录和/或设备管理活动所必需的资源的访问权限。

示例设备配置文件规则

Selector(选择器) Operator(运算符) Value(值) Logic(逻辑)
User email(用户电子邮件) in non_identity@<team-name>.cloudflareaccess.com And(且)
Operating system(操作系统) is Windows

示例 Gateway 网络策略

Selector(选择器) Operator(运算符) Value(值) Logic(逻辑)
Destination IP(目标 IP) in list Active Directory servers And(且)
User email(用户电子邮件) in non_identity@<team-name>.cloudflareaccess.com And(且)
Passed Device Posture Checks(已通过的设备状况检查) in Windows 10 or higher (OS version)
Action(操作)
Allow(允许)

3. 配置 MDM 文件

要启用 Windows 预登录功能,必须在设备上部署以下格式的 MDM 文件。在以下示例中,pre_login 键允许设备使用服务令牌进行连接,而 configs 包含您的默认 Zero Trust 配置。

<dict>
  <key>pre_login</key>
  <dict>
    <key>organization</key>
    <string>mycompany</string>
    <key>auth_client_id</key>
    <string>TOKEN-ID</string>
    <key>auth_client_secret</key>
    <string>TOKEN-SECRET</string>
  </dict>
  <key>configs</key>
  <array>
    <dict>
      <key>organization</key>
      <string>mycompany</string>
      <key>display_name</key>
      <string>Default</string>
    </dict>
  </array>
</dict>

当不存在其他 Cloudflare One Client 注册且用户尚未登录 Windows 时,Cloudflare One Client 将应用预登录配置。当预登录配置生效时,该设备将显示在 Team & Resources(团队和资源) > Devices(设备) 上,电子邮件为 non_identity@<team-name>.cloudflareaccess.com

在用户登录 Windows 后,Cloudflare One Client 将自动切换到默认的 MDM 配置,并提示用户向 IdP 进行身份验证。通过身份验证后,Cloudflare One Client 将使用用户身份进行注册并连接。此时,Team & Resources(团队和资源) > Devices(设备) 页面将显示与该用户电子邮件关联的新设备。

如果关闭了多用户模式,此用户注册将用于随后的任何连接,包括在下一次 Windows 用户登录之前。删除用户注册将导致 Cloudflare One Client 在用户注销 Windows 后立即切换回预登录配置。

要了解预登录配置如何与多用户模式配合使用,请参阅 Cloudflare One Client 注册流程图

这篇文档对您有帮助吗?