跳转到内容
搜索文档

Okta

最后更新 查看 MarkdownAgent 设置

Okta 提供云软件,帮助企业管理和保护用户对现代应用程序的身份验证,并帮助开发人员将身份控制功能构建到应用程序、网站、Web 服务和设备中。您可以将 Okta 与 Cloudflare One 集成,并基于用户身份和群组成员资格构建规则。Cloudflare One 支持使用 OIDC(默认)或 SAML 协议的 Okta 集成。

此外,您可以将 Okta 配置为使用 Cloudflare One 用户风险评分中的风险信息来创建 SSO 级别的策略。更多信息,请参考将风险评分发送到 Okta

前提条件

支持的功能

  • SP 发起的 SSO:当用户访问 Access 应用程序时,Access 将其重定向到 Okta 登录。
  • SCIM 预配:同步 Okta 群组并自动取消用户预配。SCIM 目前需要单独的自定义 OIDC 应用程序

将 Okta 设置为 OIDC 提供商(Okta 应用程序目录)

使用 Okta Integration Network (OIN) 应用程序目录设置 Okta 集成:

  1. 登录您的 Okta 管理员仪表板。

  2. 前往 Applications(应用程序)> Applications(应用程序)

  3. 选择 Browse App Catalog(浏览应用目录)

  4. 搜索 Cloudflare 并选择 **Cloudflare One(Cloudflare One)**应用程序。

  5. 选择 Add integration(添加集成)

  6. 在 **Application label(应用程序标签)**中,输入应用程序名称(例如 Cloudflare Access)。

  7. 在 **Team domain(团队域)**中,输入您的 Cloudflare Zero Trust 团队名称(仅输入子域前缀,不要包含 .cloudflareaccess.com):

    <your-team-name>

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

  8. 在 **Sign On(登录)**选项卡中,复制 **Client ID(客户端 ID)**和 Client secret(客户端密钥),并将其粘贴到 **App ID(应用程序 ID)**和 **Client secret(客户端密钥)**中。

  9. 复制您的 Okta 账户 URL(不含 -admin 值),并将其复制到 Cloudflare Okta 设置字段中。

将 Okta 设置为 OIDC 提供商(自定义应用程序集成)

  1. 登录您的 Okta 管理员仪表板,然后前往 Applications(应用程序)> Applications(应用程序)

  2. 选择 Create App Integration(创建应用集成)

  3. 对于 Sign-in method(登录方法),选择 OIDC - OpenID Connect(OIDC - OpenID Connect)

    在 Okta 中创建 OIDC 应用
  4. 对于 Application type(应用程序类型),选择 Web Application(Web 应用程序)。选择 Next(下一步)

  5. 输入任意应用程序名称。在 **Sign-in redirect URIs(登录重定向 URI)**字段中,输入以下 URL:

    https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callback

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

  6. 选择所需的 **Assignment(分配)**选项并选择 Save(保存)

  7. 在应用程序视图中,前往 **Sign On(登录)**选项卡。

  8. 向下滚动到 Token claims(令牌声明),选择 Show legacy configuration(显示旧版配置)> Edit(编辑)

    在 Okta 中配置 Groups claim 筛选器
  9. 将 **Groups claim filter(群组声明筛选器)**设置为 Matches regex,其值设置为 .*

  1. 在 **General(常规)**选项卡中,复制 **Client ID(客户端 ID)**和 Client secret(客户端密钥)

    在 Okta 中查找 Client credentials
  1. Cloudflare 仪表板中,转到 Zero Trust > Integrations(集成) > Identity providers

  2. Your identity providers(您的身份提供商) 下,选择 Add new identity provider(添加新的身份提供商)。选择 Okta 作为您的身份提供商。

  3. 填写以下信息:

    • Name(名称):为您的身份提供商命名。
    • App ID(应用 ID):输入您的 Okta 客户端 ID。
    • Client secret(客户端密钥):输入您的 Okta 客户端密钥。
    • Okta account URL(Okta 账户 URL):输入您的 Okta 域,例如 https://my-company.okta.com
  4. (可选)创建一个 Okta API 令牌,并在 Cloudflare 仪表板中的 Zero Trust > Integrations(集成) > Identity providers 下输入该令牌(令牌可以为只读权限)。如果您的 Okta 租户拥有超过 100 个组,请使用 API 令牌。若无此令牌,Cloudflare 可能无法检索所有 Okta 组以进行策略评估。

  5. (可选)配置自定义 OIDC 声明

    1. 在 Okta 中,创建一个自定义授权服务器,并确保启用 groups 范围。
    2. Cloudflare 仪表板中,输入从 Okta 获取的 Authorization Server ID
    3. Optional configurations 下,输入您希望添加到用户身份的声明。
  6. (可选)启用 Proof of Key Exchange (PKCE)。PKCE 将在所有登录尝试中执行。

  7. 选择 Save(保存)

测试连接是否正常,请选择 Test(测试)

同步用户和群组

Okta 集成允许您使用 SCIM 同步 IdP 群组并自动取消用户预配。要在 Access 和 Okta 之间启用 SCIM 预配,您需要在 Okta 中创建两个独立的应用程序集成:

  • 您在将 Okta 添加为身份提供商时创建的 OIDC 应用程序。您可以通过 Okta 应用程序目录自定义应用程序集成创建此应用程序。
  • 第二个 SCIM 2.0 Test App (Header Auth) 类型的 Okta 应用程序。这在技术上是一个 SAML 应用程序,但负责通过 SCIM 发送用户和群组信息。

1. 在 Cloudflare One 中启用 SCIM

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

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

  3. 开启 Enable SCIM

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

  • Enable user deprovisioning(启用用户取消预配):当用户从 Okta 中的 SCIM 应用程序中移除时,撤销用户的活动会话。这将使所有活动 Access 会话失效,并提示对任何 Cloudflare One Client 会话策略重新进行身份验证。
  • Remove user seat on deprovision(取消预配时移除用户席位):当用户从 Okta 中的 SCIM 应用程序中移除时,从您的 Cloudflare One 账户中移除用户席位
  • SCIM identity update behavior(SCIM 身份更新行为):选择当用户身份在 Okta 中更新时,Cloudflare One 中发生的情况。
    • Automatic identity updates:当 Okta 通过 SCIM 发送更新的身份或组成员资格时,自动更新用户注册表身份。此身份用于 Gateway 策略和 Cloudflare One Client 设备配置文件;Access 将在用户重新进行身份验证时读取其更新的身份。
    • Group membership change reauthentication:当用户的组成员资格在 Okta 中更改时,撤销用户的活动会话。这将使所有活动 Access 会话失效,并提示对任何 Cloudflare One Client 会话策略重新进行身份验证。Access 将在用户重新进行身份验证时读取其更新的组成员资格。
    • No action:在用户下次对 Access 或 Cloudflare One Client 重新进行身份验证时更新用户身份。
  1. 选择 Regenerate Secret(重新生成密钥)。复制 SCIM Endpoint(SCIM 终结点)SCIM Secret(SCIM 密钥)。您需要将这些值输入到 Okta 中。

  2. 选择 Save(保存)

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

2. 在 Okta 中配置 SCIM

  1. 在您的 Okta 管理员仪表板中,前往 Applications(应用程序)> Applications(应用程序)

  2. 选择 Browse App Catalog(浏览应用目录)

  3. 搜索 SCIM Header Auth 并选择 SCIM 2.0 Test App (Header Auth)(SCIM 2.0 测试应用(标头身份验证))。

  4. 选择 Add Integration(添加集成)

  5. 在 **General Settings(常规设置)**选项卡中,为您的应用程序命名并选择 Next(下一步)

  6. 在 **Sign-on Options(登录选项)**选项卡中,确保已选择 SAML 2.0(SAML 2.0)

  7. 在 **Credential Details(凭据详细信息)**下,将 **Application username format(应用程序用户名格式)**设置为 Okta UsernameEmail。此值将用于 SCIM userName 属性。

  8. 选择 **Done(完成)**创建集成。

  9. 在 **Provisioning(预配)**选项卡中,选择 Configure API Integration(配置 API 集成)

  10. 选择 Enable API integration(启用 API 集成)

  11. 在 **Base URL(基础 URL)**字段中,输入从 Cloudflare One 获取的 SCIM Endpoint(SCIM 端点)

  12. 在 **API Token(API 令牌)**字段中,输入从 Cloudflare One 获取的 SCIM Secret(SCIM 密钥)

    将 SCIM 值输入到 Okta
  13. 选择 **Test API Credentials(测试 API 凭据)**以确保凭据输入正确。选择 Save(保存)

  14. 在 **Provisioning(预配)**选项卡中,选择 **Edit(编辑)**并启用:

    • Create Users(创建用户)
    • Update User Attributes(更新用户属性)
    • Deactivate Users(停用用户)
    在 Okta 中配置预配设置
  15. 在 **Assignments(分配)**选项卡中,添加要与 Cloudflare Access 同步的用户。您可以通过分配群组来批量添加用户。如果用户通过直接用户分配或从分配到应用程序的群组中移除,这将触发 Okta 向 Cloudflare 发送取消预配事件。

  16. 在 **Push Groups(推送群组)**选项卡中,添加要与 Cloudflare Access 同步的 Okta 群组。这些群组将显示在 Access 策略构建器中,是在 Okta 中成员资格发生变化时将被添加和移除的群组成员资格。

要验证集成,请在 Okta SCIM 应用程序中选择 View Logs(查看日志)

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

API 配置示例

{
	"config": {
		"client_id": "<your client id>",
		"client_secret": "<your client secret>",
		"okta_account": "https://dev-abc123.oktapreview.com"
	},
	"type": "okta",
	"name": "my example idp"
}

故障排除

无法从身份提供商获取用户/群组信息

如果您看到错误 Failed to fetch user/group information from the identity,请仔细检查您的 Okta 配置:

  • 如果您的 Okta 租户拥有超过 100 个群组,请确保在身份提供商配置中包含 Okta API 令牌。Cloudflare 使用该令牌从 Okta 检索群组以进行策略评估。
  • 如果 Okta 在用户的 OIDC 令牌中返回超过 100 个群组,Okta 可能会从令牌中省略某些群组成员资格。这是 Okta 令牌声明的限制,而非 Cloudflare 的限制。如果所需群组被省略,Cloudflare 将无法评估依赖该群组的策略。为避免此问题,请缩小 Okta 群组声明过滤器的范围,使其仅包含 Cloudflare 策略中使用的群组。更多信息,请参考 Okta 的群组函数和动态允许列表文档
  • 该请求可能被 Okta 中的 ThreatInsights 功能阻止。

这篇文档对您有帮助吗?