跳转到内容
搜索文档

Generic SAML 2.0

最后更新 查看 MarkdownAgent 设置

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 响应中包含签名公钥。

1. 在您的身份提供商中创建应用程序

大多数身份提供商允许用户创建应用程序。在此上下文中,应用程序是身份提供商将传递给 Cloudflare 以建立集成的一组参数。

典型的设置要求:

  1. 在身份提供商中创建新集成,类型设为 SAML
  2. 实体/颁发者 ID单点登录 URL 均设置为:
    https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callback

    您可以在 Cloudflare 仪表板Settings(设置)> Team name and domain(团队名称和域名)> **Team name(团队名称)**下找到您的团队名称。

  3. 名称 ID/电子邮件格式设置为 emailAddress
  4. (可选)将签名策略设置为_始终签名_。

(可选)上传 SAML 元数据

如果您的身份提供商支持元数据文件配置,您可以使用默认或特定身份提供商的元数据端点:

  • 默认: 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 文件上传到身份提供商。

2. 将 SAML 身份提供商添加到 Cloudflare One

  1. Cloudflare 仪表板中,前往 Zero Trust > Integrations(集成) > Identity providers(身份提供商)
  2. 选择 Add new identity provider(添加新的身份提供商),然后选择 SAML
  3. 为您的身份提供商选择一个描述性名称。
  4. 输入从您的身份提供商获取的 Single Sign-On URL(单点登录 URL)IdP Entity ID or Issuer URL(IdP 实体 ID 或颁发者 URL) 以及 Signing certificate(签名证书)
  5. (可选)要启用 SCIM,请参阅同步用户和组
  6. (可选)在 Optional configurations(可选配置) 下,配置其他 SAML 选项
  7. 选择 Save(保存)
  1. 将以下权限添加到您的 cloudflare_api_token

    • Access: Organizations, Identity Providers, and Groups Write
  2. 配置 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"]
    	}
    }

3. 测试连接

您现在可以测试 IdP 集成。成功响应应返回已配置的 SAML 属性。

同步用户和组

通用 SAML 集成允许您使用 SCIM 同步用户组并自动取消用户配置。

前提条件

您的身份提供商必须支持 SCIM 2.0 版本。

1. 在 Cloudflare One 中启用 SCIM

  1. Cloudflare 仪表板中,前往 Zero Trust > Integrations(集成) > Identity providers

  2. 找到 IdP 集成,然后选择 Edit(编辑)

  3. 开启 Enable SCIM

  4. (可选)配置以下设置:

  • 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 重新进行身份验证时更新用户身份。
  1. 选择 Regenerate Secret(重新生成密钥)。复制 SCIM Endpoint(SCIM 终结点)SCIM Secret(SCIM 密钥)。您需要将这些值输入到 IdP 中。

  2. 选择 Save(保存)

SCIM 密钥永不过期,但您可以随时手动重新生成密钥。

2. 在 IdP 中配置 SCIM

设置说明因身份提供商而异。在您的身份提供商中,您需要编辑原始 SSO 应用程序或创建新的 SCIM 应用程序。详情请参阅您的身份提供商文档。示例说明请参阅我们的 OktaJumpCloud 指南。

IdP 组

如果您希望根据 IdP 组构建策略:

  • 确保您的 IdP 发送 groups 字段,命名必须完全匹配(不区分大小写)。所有其他值将作为 SAML 属性发送。
  • 如果您的 IdP 需要创建新的 SCIM 应用程序,请确保 SCIM 应用程序中的组与原始 SSO 应用程序中的组匹配。由于 SCIM 组成员身份更新会覆盖用户身份中的任何组,因此为每个应用程序分配相同的组可确保策略评估的一致性。

3. 验证 SCIM 预配

要检查用户身份是否已在 Cloudflare One 中更新,请查看您的 SCIM 配置日志

可选配置

SAML 集成支持额外的安全和配置选项。

加密 SAML 断言

SAML 断言加密可确保从身份提供商发送到 Cloudflare Access 的 SAML 断言端到端加密。

如果不加密,SAML 断言在 TLS 终止后以明文传输,这意味着它们可能对浏览器扩展或客户端恶意软件可见。启用加密后,您的 IdP 使用来自 Cloudflare 的公共证书对断言进行加密,只有 Access 才能使用相应的私钥对其进行解密。

启用 SAML 断言加密的步骤:

  1. Cloudflare 仪表板中,前往 Zero Trust > Integrations(集成) > Identity providers(身份提供商)
  2. 选择您的 SAML 身份提供商,然后选择 Edit(编辑)
  3. SAML encryption(SAML 加密) 下,开启 Enable SAML encryption(启用 SAML 加密) 切换。Access 将自动生成加密证书。
  4. 复制显示的证书(PEM 格式)或证书集 ID。
  5. 在您的身份提供商中,上传 Cloudflare 加密证书并开启断言加密。具体配置步骤请参阅您的 IdP 文档。
  6. 选择 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。

手动轮换证书的步骤:

  1. Cloudflare 仪表板中,前往 Zero Trust > Integrations(集成) > Identity providers(身份提供商)
  2. 选择您的 SAML 身份提供商,然后选择 Edit(编辑)
  3. 在 **SAML encryption(SAML 加密)**下,选择 Rotate certificate(轮换证书)
  4. 将新证书上传到您的身份提供商。

签名 SAML 身份验证请求

此可选配置使用 Cloudflare Access 公钥对 Access JWT 进行签名,以确保 JWT 来自合法来源。Cloudflare 公钥可在 https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/certs 获取。

电子邮件属性名称

许多 Access 策略依赖用户的电子邮件地址。某些身份提供商对电子邮件地址属性使用不同的命名(例如 Emaile-mailemailAddress)。这通常可以在身份提供商的 SAML 测试选项中进行检查。

Okta 示例:

从 Okta 仪表板预览 SAML 断言从 SAML 断言中确定电子邮件属性名称

SAML 标头和属性

Cloudflare Access 支持所有 SAML IdP 集成的 SAML(安全断言标记语言)属性和 SAML 标头。

SAML 属性是指 IdP 关于已认证用户共享的特定数据点或特征。这些属性通常包括电子邮件地址、姓名或角色等详细信息,在成功认证后传递给服务提供商。

SAML 标头是 SAML 协议通信中的元数据,传达有关发送方、接收方和消息本身的信息。这些标头可用于提供额外的上下文或控制通信。

SAML 属性

SAML 属性被添加到 Access JWT 中。这些属性可以被连接到 Access 的自托管或 SaaS 应用程序使用。在 SAML 集成中配置的任何 SAML 属性也必须由 IdP 发送。

Okta 示例:

配置 Okta 发送 SAML 属性

在 Cloudflare 中接收这些 SAML 属性的方法:

配置 Cloudflare 接收 SAML 属性

SAML 标头

如果应用程序在登录时特别需要 SAML 属性,则可以将这些属性作为标头传递。属性名称应为来自您的 IdP 的值(例如 department)。您可以为该属性分配任何标头名称。当 Access 向 https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callback 发出初始授权请求时,标头名称将出现在响应标头中。

多记录 SAML 属性

Cloudflare Access 扩展了对多记录 SAML 属性(如组)的支持。这些属性会被解析出来,并可在策略中单独引用。此功能可实现对应用程序的细粒度访问控制和精确的用户授权。

Cloudflare Access 目前不支持部分属性值引用。

这篇文档对您有帮助吗?