Cloudflare Access 可以向已批准的电子邮件地址发送一次性 PIN (OTP),作为集成身份提供商的替代方案。您可以同时配置 OTP 登录和您选择的身份提供商,让用户自行选择身份验证方式。
新的 Zero Trust 组织默认使用 Cloudflare 身份提供商作为登录方式。OTP 不再自动添加,但您可以随时使用以下步骤进行设置。
例如,如果您的团队使用 Okta,但您正在与组织外的人员协作,可以使用 OTP 向访客授予访问权限。
- 在 Cloudflare 仪表板 ↗中,前往 Zero Trust > Integrations(集成) > Identity providers(身份提供商)。
- 在 **Your identity providers(您的身份提供商)**下,选择 Add new identity provider(添加新身份提供商)。
- 选择 One-time PIN(一次性 PIN)。
向 Identity Providers 端点发送 POST 请求:
Required API token permissions
At least one of the following token permissions is required:Access: Organizations, Identity Providers, and Groups Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/identity_providers" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "One-time PIN login",
"type": "onetimepin",
"config": {}
}'-
向您的
cloudflare_api_token↗ 添加以下权限:Access: Organizations, Identity Providers, and Groups Write
-
配置
cloudflare_zero_trust_access_identity_provider↗ 资源:resource "cloudflare_zero_trust_access_identity_provider" "onetimepin_login" { account_id = var.cloudflare_account_id name = "One-time PIN login" type = "onetimepin" config = {} }
要向用户授予对应用程序的访问权限,只需将其电子邮件地址添加到 Access 策略即可。
使用一次性 PIN 登录 Access:
- 前往受 Access 保护的应用程序。
- 在 Access 登录页面,输入您的电子邮件地址并选择 Send login code(发送登录代码)。

- 如果该电子邮件地址被 Access 策略允许,您将在收件箱中收到一个 PIN。此安全 PIN 在首次请求后 10 分钟过期。
- 将 PIN 粘贴到 Access 登录页面并选择 Sign in(登录)。
- 如果代码有效,您将被重定向到应用程序。
- 如果代码无效,您将看到 That account does not have access.(该账户无权访问。)
- 如果您看到 This One-Time PIN has already been used(此一次性 PIN 已被使用),表示代码已被使用。这通常发生在您网络上的电子邮件安全工具在您输入代码之前自动扫描电子邮件并访问链接时。选择 **Request new code(请求新代码)**然后重试。
排查 OTP 登录问题时,请牢记以下行为:
- 每个 PIN 只能使用一次。
- 请求新 PIN 会使之前的 PIN 失效。
- Cloudflare 仅在用户被 Access 策略允许时才会发送电子邮件。
- 第三方邮件安全工具可能会在用户之前消耗该链接,使代码显示为已使用。
如果用户多次登录失败,请请求新代码,并验证您的邮件过滤或链接扫描产品是否已将 noreply@notify.cloudflare.com 加入允许列表。