本页面提供了使用 OpenID Connect (OIDC) 身份验证协议在 Cloudflare Access 中设置 SaaS 应用程序的通用说明。
- 在 Cloudflare One 中配置的身份提供商
- 对 SaaS 应用程序账户的管理员访问权限
在您的 SaaS 应用程序账户中,获取 Redirect URL(重定向 URL)(也称为回调 URL)。这是用户在使用 Cloudflare Access 进行身份验证后被重定向到的 SaaS 端点。
某些 SaaS 应用程序在您配置 SSO 提供商后才提供重定向 URL。
-
在 Cloudflare 仪表板 ↗中,转到 Zero Trust > Access controls(访问控制)> Applications(应用程序)。
-
选择 Create new application(创建新应用程序)。
-
选择 SaaS application(SaaS 应用程序)。
-
从下拉菜单中选择您的 Application(应用程序)。如果您的应用程序未列出,请在 Application(应用程序) 字段中输入自定义名称,并选择下方出现的文本框。
-
选择 OIDC。
-
选择 Add application(添加应用程序)。
-
在 **Scopes(作用域)**中,选择您希望 Access 在 ID 令牌中发送的用户属性。有关配置 OIDC 作用域和声明的更多信息,请参阅 OIDC 声明。
-
在 **Redirect URLs(重定向 URL)**中,输入从 SaaS 应用程序获取的回调 URL。
-
(可选)如果您的 IdP 支持该协议,请启用 PKCE (Proof of Key Exchange) ↗。PKCE 将在所有登录尝试中执行。
-
复制以下值以便输入到您的 SaaS 应用程序中。不同的 SaaS 应用程序可能需要不同的输入值组合。
字段 描述 Client secret 用于授权 Access 作为 SSO 提供商的凭据 Client ID 此 Access 应用程序的唯一标识符 Configuration endpoint 如果您的 SaaS 应用程序支持,您可以使用此端点配置 OIDC,而无需手动输入下面列出的 URL。
https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/sso/oidc/<client-id>/.well-known/openid-configurationIssuer 此 OIDC 集成的基础 URL
https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/sso/oidc/<client-id>Token endpoint 返回用户的 ID 令牌
https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/sso/oidc/<client-id>/tokenAuthorization endpoint 用户使用 Access 进行身份验证的 URL
https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/sso/oidc/<client-id>/authorizationKey endpoint 返回用于验证 Access JWT的当前公钥
https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/sso/oidc/<client-id>/jwksUser info endpoint 以 JSON 格式返回所有用户声明
https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/sso/oidc/<client-id>/userinfo 在 Access policies 下,添加现有策略或创建新策略,以控制哪些用户可以连接到您的应用程序。所有 Access 应用程序默认均为拒绝状态——用户必须匹配 Allow 策略才能被授予访问权限。
配置用户的身份验证方式:
选择您希望为应用程序启用的身份提供商。
(推荐)如果您计划仅允许通过单一 IdP 进行访问,请开启 Apply instant authentication。最终用户将不会看到 Cloudflare Access 登录页面,Cloudflare 将直接将用户重定向到您的 SSO 登录事件。
- (可选)开启 Authenticate with Cloudflare One Client,允许用户使用其 Cloudflare One Client 会话身份对应用程序进行身份验证。
-
(可选)转到 **Additional settings(其他设置)**以自定义应用程序体验:
- App Launcher customization(应用启动器自定义):配置此应用程序在应用启动器中对用户的显示方式。如果启用了 Show application in App Launcher(在应用启动器中显示应用程序),则您必须输入 App Launcher URL(应用启动器 URL)。该应用启动器 URL 由 SaaS 应用程序提供。它可能与 **Redirect URL(重定向 URL)**的基础 URL 部分(
https://<INSTANCE-NAME>.example-app.com)相匹配,但也可能是不同的值。 自定义拦截页面:选择用户被拒绝访问应用程序时将看到的内容。
- App Launcher customization(应用启动器自定义):配置此应用程序在应用启动器中对用户的显示方式。如果启用了 Show application in App Launcher(在应用启动器中显示应用程序),则您必须输入 App Launcher URL(应用启动器 URL)。该应用启动器 URL 由 SaaS 应用程序提供。它可能与 **Redirect URL(重定向 URL)**的基础 URL 部分(
-
选择 Create(创建)。
接下来,配置您的 SaaS 应用程序以要求用户通过 Cloudflare Access 进行登录。有关如何配置第三方 OIDC SSO 提供商的说明,请参阅您的 SaaS 应用程序文档。
打开无痕/隐私浏览器窗口,并转到 SaaS 应用程序的登录 URL。您将被重定向到 Cloudflare Access 登录页面,并被提示使用您的身份提供商进行登录。
OIDC 声明是指在成功进行身份验证后,Cloudflare Access 与您的 OIDC SaaS 应用程序共享的用户身份特征。OIDC 作用域定义了一组 OIDC 声明。默认情况下,Cloudflare Access 会传递 openid、email、profile 和 groups 作用域中所包含的所有标准声明 ↗(如果可用)。
| 作用域 | 描述 |
|---|---|
openid |
包含用户的唯一标识符(必需)。 |
email |
包含用户的电子邮件地址。 |
profile |
包含用户的姓名以及来自 IdP 的所有自定义 OIDC 声明。 |
groups |
包含用户的 IdP 组成员身份。 |
在您的 Access 应用程序中,您可以配置 Access 发送给 SaaS 提供商的 OIDC 作用域和声明。例如,如果您的 SaaS 应用程序不需要接收用户组信息,您可以移除 groups 作用域。
在 **Group filter regex(组过滤器正则表达式)**中,您可以输入一个正则表达式来定义您想要包含在 groups 作用域中的身份提供商组。例如,如果您输入表达式 (^TEAM-Engineering-.$)|(^TEAM-Product-.$),那么只有名称形如 TEAM-Engineering-A 或 TEAM-Product-B 的组才会被传递给 SaaS 应用程序。
要将额外的 OIDC 声明添加到发送至您的 SaaS 应用程序的 ID 令牌中,请为每个声明配置以下字段:
- Name(名称):OIDC 声明名称
- Scope(作用域):选择应包含此声明的 OIDC 作用域。在大多数情况下,我们建议选择
profile,因为它已经包含了来自 IdP 的其他自定义声明。 - IdP claim(IdP 声明):应映射到此 OIDC 声明的身份提供商值。您可以选择在 Zero Trust IdP 集成中配置的任何 SAML 属性或 OIDC 声明。
- Required(必需):如果某个声明被标记为必需,但 IdP 未提供该声明,Cloudflare 将导致身份验证请求失败并显示错误页面。
- Add per IdP claim(按 IdP 声明添加):(可选)如果您为该 SaaS 应用程序启用了多个身份提供商,您可以为每个 IdP 选择不同的属性映射。这些值将覆盖父级 IdP claim(IdP 声明)。
OIDC Access 令牌授权用户通过 Cloudflare Access 连接到 SaaS 应用程序。您可以设置 Access token lifetime(Access 令牌生命周期),以确定可使用该令牌与 SaaS 应用程序建立身份验证的时间窗口 —— 如果该令牌过期,用户必须通过 Cloudflare Access 重新进行身份验证。为了平衡安全性和用户便利性,Cloudflare 建议在配置较短的 Access 令牌生命周期的同时,配置较长的 Refresh token lifetime(刷新令牌生命周期)(如果您的应用程序支持)。当访问令牌过期时,Cloudflare 将在根据您的 Access 策略检查用户身份后,使用刷新令牌来获取新的访问令牌。当刷新令牌过期时,用户将需要重新登录到身份提供商。刷新令牌的生命周期应小于您的全局会话时长,否则全局会话将具有更高的优先级。
某些 SaaS 应用程序要求 SSO 提供商在没有后端身份验证的情况下向浏览器提供令牌。SaaS 的 Access 支持以下 OIDC 流程:
- 无附加 OIDC 流程:(默认)除非您的应用程序需要附加流程,否则推荐使用此项。
- Hybrid flows(混合流程):由在验证用户身份之前需要来自 ID 令牌的信息的应用程序使用。
- Implicit flows(隐式流程):(不推荐)通常由无法存储机密且不支持不带客户端密钥的 PKCE 的前端应用程序使用。
根据所选流程,Cloudflare 允许在授权请求中使用各种 response_type 值。例如,隐式流程允许 Cloudflare 从授权端点返回 ID 令牌、Access 令牌,或者同时返回 ID 令牌和 Access 令牌。
response_type 值 |
默认流程 | 混合流程 | 隐式流程 |
|---|---|---|---|
code |
✅ | ✅ | ❌ |
id_token |
❌ | ✅ | ✅ |
token |
❌ | ✅ | ✅ |
要在授权请求中包含 id_token,请开启 Return ID Token from Authorization Endpoint(从授权端点返回 ID 令牌)。要包含 token,请开启 Return Access Token from Authorization Endpoint(从授权端点返回访问令牌)。