Cloudflare One 可与任何支持 SAML 2.0 的身份提供商集成。如果您的身份提供商未列在 Cloudflare One 登录方式集成列表中,可以使用 SAML 2.0(或基于 OIDC 时使用 OpenID)进行配置。如果您希望为集成列表中的 IdP 传递额外的 SAML 标头或声明,也可以使用通用 SAML。
身份提供商的最低要求:
- IdP 必须符合 SAML 2.0。
- IdP 必须提供单点登录 URL、实体 ID 或颁发者 URL 以及签名证书。
- IdP 必须在 SAML 响应中包含签名公钥。
大多数身份提供商允许用户创建应用程序。在此上下文中,应用程序是身份提供商将传递给 Cloudflare 以建立集成的一组参数。
典型的设置要求:
- 在身份提供商中创建新集成,类型设为 SAML。
- 将实体/颁发者 ID 和单点登录 URL 均设置为:
https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callback您可以在 Cloudflare 仪表板 ↗ 的 Settings(设置)> Team name and domain(团队名称和域名)> **Team name(团队名称)**下找到您的团队名称。
- 将名称 ID/电子邮件格式设置为
emailAddress。 - (可选)将签名策略设置为_始终签名_。
如果您的身份提供商支持元数据文件配置,您可以使用默认或特定身份提供商的元数据端点:
- 默认:
https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/saml-metadata - 特定身份提供商:
https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/<identity-provider-id>/saml-metadata,其中<identity-provider-id>是从列出 Access 身份提供商获取的id值。如果您的 IdP 需要默认元数据文件中未定义的配置,请使用此端点。
要下载 SAML 元数据文件,请将元数据端点复制粘贴到 Web 浏览器中,并将页面保存为 .xml 文件。将此 XML 文件上传到身份提供商。
- 在 Cloudflare 仪表板 ↗中,前往 Zero Trust > Integrations(集成) > Identity providers(身份提供商)。
- 选择 Add new identity provider(添加新的身份提供商),然后选择 SAML。
- 为您的身份提供商选择一个描述性名称。
- 输入从您的身份提供商获取的 Single Sign-On URL(单点登录 URL)、IdP Entity ID or Issuer URL(IdP 实体 ID 或颁发者 URL) 以及 Signing certificate(签名证书)。
- (可选)要启用 SCIM,请参阅同步用户和组。
- (可选)在 Optional configurations(可选配置) 下,配置其他 SAML 选项。
- 选择 Save(保存)。
-
将以下权限添加到您的
cloudflare_api_token↗:Access: Organizations, Identity Providers, and Groups Write
-
配置
cloudflare_zero_trust_access_identity_provider↗ 资源:resource "cloudflare_zero_trust_access_identity_provider" "generic_saml_example" { account_id = var.cloudflare_account_id name = "Generic SAML example" type = "saml" config = { sso_target_url = "https://example.com/1234/sso/saml" issuer_url = "https://example.com/1234" idp_public_certs = ["-----BEGIN CERTIFICATE-----\nXXXXX\n-----END CERTIFICATE-----"] sign_request = false email_attribute_name = "email" attributes = ["employeeID", "groups"] } }
您现在可以测试 IdP 集成。成功响应应返回已配置的 SAML 属性。
通用 SAML 集成允许您使用 SCIM 同步用户组并自动取消用户配置。
您的身份提供商必须支持 SCIM 2.0 版本。
-
在 Cloudflare 仪表板 ↗中,前往 Zero Trust > Integrations(集成) > Identity providers。
找到 IdP 集成,然后选择 Edit(编辑)。
开启 Enable SCIM
-
(可选)配置以下设置:
- Enable user deprovisioning(启用用户取消预配):当用户从 IdP 中的 SCIM 应用程序中移除时,撤销用户的活动会话。这将使所有活动 Access 会话失效,并提示对任何 Cloudflare One Client 会话策略重新进行身份验证。
- Remove user seat on deprovision(取消预配时移除用户席位):当用户从 IdP 中的 SCIM 应用程序中移除时,从您的 Cloudflare One 账户中移除用户席位。
- SCIM identity update behavior(SCIM 身份更新行为):选择当用户身份在 IdP 中更新时,Cloudflare One 中发生的情况。
- Automatic identity updates:当 IdP 通过 SCIM 发送更新的身份或组成员资格时,自动更新用户注册表身份。此身份用于 Gateway 策略和 Cloudflare One Client 设备配置文件;Access 将在用户重新进行身份验证时读取其更新的身份。
- Group membership change reauthentication:当用户的组成员资格在 IdP 中更改时,撤销用户的活动会话。这将使所有活动 Access 会话失效,并提示对任何 Cloudflare One Client 会话策略重新进行身份验证。Access 将在用户重新进行身份验证时读取其更新的组成员资格。
- No action:在用户下次对 Access 或 Cloudflare One Client 重新进行身份验证时更新用户身份。
选择 Regenerate Secret(重新生成密钥)。复制 SCIM Endpoint(SCIM 终结点) 和 SCIM Secret(SCIM 密钥)。您需要将这些值输入到 IdP 中。
-
选择 Save(保存)。
SCIM 密钥永不过期,但您可以随时手动重新生成密钥。
设置说明因身份提供商而异。在您的身份提供商中,您需要编辑原始 SSO 应用程序或创建新的 SCIM 应用程序。详情请参阅您的身份提供商文档。示例说明请参阅我们的 Okta 或 JumpCloud 指南。
如果您希望根据 IdP 组构建策略:
- 确保您的 IdP 发送
groups字段,命名必须完全匹配(不区分大小写)。所有其他值将作为 SAML 属性发送。 - 如果您的 IdP 需要创建新的 SCIM 应用程序,请确保 SCIM 应用程序中的组与原始 SSO 应用程序中的组匹配。由于 SCIM 组成员身份更新会覆盖用户身份中的任何组,因此为每个应用程序分配相同的组可确保策略评估的一致性。
要检查用户身份是否已在 Cloudflare One 中更新,请查看您的 SCIM 配置日志。
SAML 集成支持额外的安全和配置选项。
SAML 断言加密可确保从身份提供商发送到 Cloudflare Access 的 SAML 断言端到端加密。
如果不加密,SAML 断言在 TLS 终止后以明文传输,这意味着它们可能对浏览器扩展或客户端恶意软件可见。启用加密后,您的 IdP 使用来自 Cloudflare 的公共证书对断言进行加密,只有 Access 才能使用相应的私钥对其进行解密。
启用 SAML 断言加密的步骤:
- 在 Cloudflare 仪表板 ↗中,前往 Zero Trust > Integrations(集成) > Identity providers(身份提供商)。
- 选择您的 SAML 身份提供商,然后选择 Edit(编辑)。
- 在 SAML encryption(SAML 加密) 下,开启 Enable SAML encryption(启用 SAML 加密) 切换。Access 将自动生成加密证书。
- 复制显示的证书(PEM 格式)或证书集 ID。
- 在您的身份提供商中,上传 Cloudflare 加密证书并开启断言加密。具体配置步骤请参阅您的 IdP 文档。
- 选择 Save(保存)。
开启加密后,Access 将拒绝来自已配置 IdP 的任何未加密断言。如果关闭加密,Access 将拒绝任何加密断言,直到重新开启加密。
Access 支持以下加密算法:
| 算法类型 | 支持的值 |
|---|---|
| 内容加密 | AES-128-CBC、AES-256-CBC、AES-128-GCM、AES-256-GCM |
| 密钥传输 | RSA-OAEP(XML 加密 1.0 和 1.1)、RSA-1.5 |
加密证书有效期为一年。在证书到期前三十天,Access 会自动生成替换证书。到期证书在其到期日之前仍然有效,为您提供时间将新证书上传到您的 IdP。
手动轮换证书的步骤:
- 在 Cloudflare 仪表板 ↗中,前往 Zero Trust > Integrations(集成) > Identity providers(身份提供商)。
- 选择您的 SAML 身份提供商,然后选择 Edit(编辑)。
- 在 **SAML encryption(SAML 加密)**下,选择 Rotate certificate(轮换证书)。
- 将新证书上传到您的身份提供商。
此可选配置使用 Cloudflare Access 公钥对 Access JWT 进行签名,以确保 JWT 来自合法来源。Cloudflare 公钥可在 https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/certs 获取。
许多 Access 策略依赖用户的电子邮件地址。某些身份提供商对电子邮件地址属性使用不同的命名(例如 Email、e-mail、emailAddress)。这通常可以在身份提供商的 SAML 测试选项中进行检查。
Okta 示例:

Cloudflare Access 支持所有 SAML IdP 集成的 SAML(安全断言标记语言)属性和 SAML 标头。
SAML 属性是指 IdP 关于已认证用户共享的特定数据点或特征。这些属性通常包括电子邮件地址、姓名或角色等详细信息,在成功认证后传递给服务提供商。
SAML 标头是 SAML 协议通信中的元数据,传达有关发送方、接收方和消息本身的信息。这些标头可用于提供额外的上下文或控制通信。
SAML 属性被添加到 Access JWT 中。这些属性可以被连接到 Access 的自托管或 SaaS 应用程序使用。在 SAML 集成中配置的任何 SAML 属性也必须由 IdP 发送。
Okta 示例:
在 Cloudflare 中接收这些 SAML 属性的方法:
如果应用程序在登录时特别需要 SAML 属性,则可以将这些属性作为标头传递。属性名称应为来自您的 IdP 的值(例如 department)。您可以为该属性分配任何标头名称。当 Access 向 https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callback 发出初始授权请求时,标头名称将出现在响应标头中。
Cloudflare Access 扩展了对多记录 SAML 属性(如组)的支持。这些属性会被解析出来,并可在策略中单独引用。此功能可实现对应用程序的细粒度访问控制和精确的用户授权。
Cloudflare Access 目前不支持部分属性值引用。