您可以将 Microsoft Entra ID(前称 Azure Active Directory)与 Cloudflare One 集成,并根据用户身份和组成员身份构建策略。用户将使用其 Entra ID 凭据向 Cloudflare One 进行身份验证。
设置集成需要以下 Entra ID 值:
- 应用程序(客户端)ID
- 目录(租户)ID
- 客户端密钥
获取这些值的步骤:
-
前往 Applications(应用程序) > Enterprise applications(企业应用程序)。
-
选择 New application(新建应用程序),然后选择 Create your own application(创建您自己的应用程序)。
-
为您的应用程序命名。
-
选择 Register an application to integrate with Microsoft Entra ID (App you're developing)(注册应用程序以与 Microsoft Entra ID 集成(您正在开发的应用程序))。如果有推荐,请勿选择任何库中的应用程序。选择 Create(创建)。
-
在 Redirect URI(重定向 URI) 下,选择 Web 平台并输入以下 URL。
https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callback您可以在 Cloudflare 仪表板 ↗ 的 Settings(设置)> Team name and domain(团队名称和域名)> **Team name(团队名称)**下找到您的团队名称。

-
选择 Register(注册)。
-
接下来,返回 Microsoft Entra ID,前往 Applications(应用程序) > App registrations(应用注册)。
-
选择 All applications(所有应用程序),然后选择您刚创建的应用程序。复制 Application (client) ID(应用程序(客户端)ID) 和 Directory (tenant) ID(目录(租户)ID)。在步骤 3 将 Entra ID 添加为身份提供商时,您将需要这些值。

-
在同一页面上,在 Client credentials(客户端凭据) 下,前往 Add a certificate or secret(添加证书或密钥)。选择 New client secret(新建客户端密钥)。
-
为客户端密钥命名并选择过期时间。
-
创建客户端密钥后,复制其 Value(值) 字段。请将客户端密钥存储在安全的地方,因为它只能在创建后立即查看。在步骤 3 将 Entra ID 添加为身份提供商时,您将需要此客户端密钥值。

-
前往 App registrations(应用注册) > All applications(所有应用程序) > 选择您的应用程序 > API permissions(API 权限)。
-
选择 Add a permission(添加权限)。
-
选择 Microsoft Graph。
-
选择 Delegated permissions(委托权限) 并启用以下权限 ↗:
emailoffline_accessopenidprofileUser.ReadDirectory.Read.AllGroupMember.Read.All
-
启用所有七个权限后,选择 Add permissions(添加权限)。
-
选择 Grant admin consent(授予管理员同意)。

-
在 Cloudflare 仪表板 ↗中,前往 Zero Trust > Integrations(集成) > Identity providers(身份提供商)。
-
在 Your identity providers(您的身份提供商) 下,选择 Add new identity provider(添加新的身份提供商)。
-
选择 Azure AD。
-
输入从 Microsoft Entra ID 获取的 Application (client) ID(应用程序(客户端)ID)、Client secret(客户端密钥) 和 Directory (tenant) ID(目录(租户)ID)。
-
选择 Save(保存)。
-
要测试连接是否正常,请选择 Test(测试)。
-
(可选)配置以下设置:
- 密钥交换验证:对所有登录尝试执行 PKCE ↗。
- 支持组:允许 Cloudflare 读取用户的 Entra ID 组成员身份。
- Entra ID 策略同步:请参阅我们的 Entra ID 条件访问教程。
- 启用 SCIM:请参阅同步用户和组。
- 电子邮件声明:输入您希望用于用户识别的 Entra ID 声明(例如
preferred_username)。 - OIDC 声明:输入您希望添加到用户身份的自定义 OIDC 声明。
向身份提供商端点发送 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": "Entra ID example",
"type": "azureAD",
"config": {
"client_id": "<your client id>",
"client_secret": "<your client secret>",
"directory_id": "<your azure directory uuid>",
"support_groups": true
}
}'-
将以下权限添加到您的
cloudflare_api_token↗:Access: Organizations, Identity Providers, and Groups Write
-
配置
cloudflare_zero_trust_access_identity_provider↗ 资源:resource "cloudflare_zero_trust_access_identity_provider" "microsoft_entra_id" { account_id = var.cloudflare_account_id name = "Entra ID example" type = "azureAD" config = { client_id = var.entra_id_client_id client_secret = var.entra_id_client_secret directory_id = var.entra_id_directory_id support_groups = true } }
如果您组织的 UPN 与用户的电子邮件地址不匹配,则必须为电子邮件添加自定义声明。例如,如果您组织的电子邮件格式为 [email protected],但 UPN 为 [email protected],若您要配置基于电子邮件的策略,则必须创建电子邮件声明。
默认情况下,Cloudflare 会首先在 id_token JSON 响应中查找您在 Cloudflare One 中创建和配置的用于表示电子邮件的唯一声明名称(例如 email_identifier)。如果您没有配置唯一声明名称,Cloudflare 将查找 email 声明。最后,如果两者都不存在,Cloudflare 将查找 UPN 声明。
要从 Microsoft Entra 的 id_token 中接收电子邮件声明,您必须:
-
在 Microsoft Entra 管理中心 ↗,前往 Applications(应用程序) > App registrations(应用注册) > All applications(所有应用程序),选择相关应用程序。
-
在 Manage(管理) 下,选择 Token configuration(令牌配置)。
-
为电子邮件添加声明。
上面的示例同时包含 UPN 声明和电子邮件声明。由于在 Microsoft Entra 配置中创建了电子邮件声明,Cloudflare 将在 JSON 响应中查找
email键值对。 -
如果您为电子邮件声明使用了
email以外的名称,则必须在 Cloudflare One 中更新您的配置:a. 在 Cloudflare 仪表板 ↗中,前往 Zero Trust > Integrations(集成) > Identity providers(身份提供商) > Azure AD > Edit(编辑)。
b. 在 Optional configurations(可选配置) > Email claim(电子邮件声明) 下,输入代表您组织电子邮件地址的声明名称。
如果您担心用户的电子邮件或 UPN 可能会更改,可以将用户的对象 ID(oid)从 Microsoft Entra 传递给 Cloudflare Access。要配置 Access 接收对象 ID,请参阅自定义 OIDC 声明。无需在 Microsoft Entra 中进行额外配置。
Microsoft Entra ID 集成允许您使用 SCIM 同步 IdP 组并自动取消用户配置。
- Microsoft Entra ID P1 或 P2 许可证
-
在 Cloudflare 仪表板 ↗中,前往 Zero Trust > Integrations(集成) > Identity providers。
找到 Entra ID 集成,然后选择 Edit(编辑)。
开启 Enable SCIM 和 Support groups。
-
(可选)配置以下设置:
- Enable user deprovisioning(启用用户取消预配):当用户从 Entra ID 中的 SCIM 应用程序中移除时,撤销用户的活动会话。这将使所有活动 Access 会话失效,并提示对任何 Cloudflare One Client 会话策略重新进行身份验证。
- Remove user seat on deprovision(取消预配时移除用户席位):当用户从 Entra ID 中的 SCIM 应用程序中移除时,从您的 Cloudflare One 账户中移除用户席位。
- SCIM identity update behavior(SCIM 身份更新行为):选择当用户身份在 Entra ID 中更新时,Cloudflare One 中发生的情况。
- Automatic identity updates:当 Entra ID 通过 SCIM 发送更新的身份或组成员资格时,自动更新用户注册表身份。此身份用于 Gateway 策略和 Cloudflare One Client 设备配置文件;Access 将在用户重新进行身份验证时读取其更新的身份。
- Group membership change reauthentication:当用户的组成员资格在 Entra ID 中更改时,撤销用户的活动会话。这将使所有活动 Access 会话失效,并提示对任何 Cloudflare One Client 会话策略重新进行身份验证。Access 将在用户重新进行身份验证时读取其更新的组成员资格。
- No action:在用户下次对 Access 或 Cloudflare One Client 重新进行身份验证时更新用户身份。
选择 Regenerate Secret(重新生成密钥)。复制 SCIM Endpoint(SCIM 终结点) 和 SCIM Secret(SCIM 密钥)。您需要将这些值输入到 Entra ID 中。
-
选择 Save(保存)。
SCIM 密钥永不过期,但您可以随时手动重新生成密钥。
-
在 Microsoft Entra ID 菜单中,前往 Enterprise applications(企业应用程序)。
-
选择 New application(新建应用程序) > Create your own application(创建您自己的应用程序)。
-
为您的应用程序命名(例如
Cloudflare Access SCIM)。 -
选择 Integrate any other application you don't find in the gallery (Non-gallery)(集成库中没有的其他任何应用程序(非库))。如果有推荐,请勿选择任何库中的应用程序。选择 Create(创建)。
-
创建应用程序后,前往 Provisioning(预配) > 选择 New configuration(新建配置)。
-
在 Tenant URL(租户 URL) 字段中,输入从上一步骤中 Cloudflare One 的 Entra ID 集成获取的 SCIM 端点。
-
在 Secret token(密钥令牌) 字段中,输入从上一步骤中 Cloudflare One 的 Entra ID 集成获取的 SCIM 密钥。
-
选择 Test connection(测试连接),确保凭据输入正确。如果测试失败,请在 Cloudflare One 的 Entra ID 集成中选择 Regenerate secret(重新生成密钥),选择 Save(保存),然后在 Secret token(密钥令牌) 字段中输入新的 SCIM 密钥。
-
选择 Create(创建)。
-
创建 SCIM 应用程序后,将用户和组分配给该应用程序 ↗。
-
前往 Provisioning(预配),然后选择 Start provisioning(开始预配)。
-
对于 Provisioning Mode(预配模式),Microsoft 默认应将其设置为 Automatic(自动)。
-
在 Entra ID 的 Overview(概览) 页面,您将看到同步状态。
要查看哪些用户和组已同步,请选择 Provisioning logs(预配日志)。
要检查用户身份是否已在 Cloudflare One 中更新,请查看您的 SCIM 配置日志。
要监控 Cloudflare Access 与 Microsoft Entra ID 之间的身份详情交换,请前往 Cloudflare 仪表板 ↗ > Zero Trust > Insights(洞察) > Logs(日志) > SCIM provisioning logs(SCIM 预配日志),并查看 SCIM 活动日志。
预配属性定义 Entra ID 将与 Cloudflare Access 同步的用户属性。要修改您的预配属性,请前往 Attribute mapping(属性映射) 并选择 Provision Microsoft Entra ID Users(预配 Microsoft Entra ID 用户)。
如果尚未配置,Cloudflare 建议启用以下用户属性映射:
| customappsso 属性 | Entra ID 属性 | 建议 |
|---|---|---|
userName |
userPrincipalName 或 mail |
必填。必须与 Cloudflare One 中的用户电子邮件地址匹配。 |
emails[type eq "work"].value |
mail |
必填。必须与 Cloudflare One 中的用户电子邮件地址匹配。 |
name.givenName |
givenName |
推荐 |
name.familyName |
surname |
推荐 |
启用 SCIM 同步后,您的 Entra 组名称将自动显示在 Access 和 Gateway 策略构建器中。
如果构建 Access 策略,请选择 Azure Groups 选择器。

如果构建 Gateway 策略,请选择用户组名称选择器。
您可以为未与 SCIM 同步的组创建 Access 和 Gateway 策略。Entra ID 以由随机字符串组成的格式公开目录组,即 Object Id,它与 Name 不同。
-
确保在 Cloudflare One 中设置 Microsoft Entra ID 时启用了支持组。
-
在您的 Microsoft Entra 仪表板中,记录 Entra 组的
Object Id。在下面的示例中,名为 Admins 的组 ID 为61503835-b6fe-4630-af88-de551dd59a2。
-
如果构建 Access 策略,请选择 Azure Groups 选择器。如果构建 Gateway 策略,请选择 User Group IDs 选择器。
-
在值字段中,输入 Entra 组的
Object Id。
针对 Entra 组的 Access 和 Gateway 策略也将适用于所有嵌套组 ↗。例如,如果用户属于组 US devs,而 US devs 是更大范围组 Devs 的一部分,则该用户将受到为 Devs 创建的所有策略的约束(允许或阻止)。
对于 SCIM 预配,不支持嵌套组 ↗。Microsoft Entra ID 的 SCIM 实现不会向 Cloudflare 发送有关嵌套组成员身份的信息。只有直接隶属于明确分配组的用户才会被预配。为确保正确同步组成员身份,您必须在 Entra ID 中通过将用户直接分配到您想要预配的组来扁平化您的组结构。
由于来自 Microsoft 的 SCIM 请求不包含嵌套组信息,因此 Cloudflare 和 Microsoft 都无法通知您嵌套组未被同步。
每当用户重新认证其 Cloudflare One 客户端会话时,您可以要求用户在 Entra ID 中重新输入其凭据。配置步骤:
-
向身份提供商端点发送
GET请求,并复制 Entra ID 身份提供商的响应。
At least one of the following token permissions is required:Required API token permissions
Access: Organizations, Identity Providers, and Groups WriteAccess: Organizations, Identity Providers, and Groups Read
Get an Access identity providerbash curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/identity_providers/$IDENTITY_PROVIDER_ID" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" -
使用
PUT请求更新 Entra ID 身份提供商。在请求正文中,包含所有现有配置,并将prompt参数设置为login或select_account。例如:
At least one of the following token permissions is required:Required API token permissions
Access: Organizations, Identity Providers, and Groups Write
Update an Access identity providerbash curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/identity_providers/$IDENTITY_PROVIDER_ID" \ --request PUT \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "type": "azureAD", "uid": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "name": "Entra ID", "version": "31e74e9b4f033e16b604552091a72295", "config": { "azure_cloud": "default", "client_id": "<CLIENT_ID>", "conditional_access_enabled": false, "directory_id": "<AZURE_DIRECTORY_ID>", "redirect_url": "https://<TEAM_NAME>.cloudflareaccess.com/cdn-cgi/access/callback", "prompt": "login", "support_groups": true }, "scim_config": { "enabled": true, "user_deprovision": true, "seat_deprovision": false, "group_member_deprovision": false, "identity_update_behavior": "automatic" }, "scim_base_url": "https://<TEAM_NAME>.cloudflareaccess.com/populations/f174e90a-fafe-4643-bbbc-4a0ed4fc8415/scim/v2" }'