Skip to main content

概述

Okta 可提供经过标准化处理的用户生命周期、身份验证、MFA 和管理活动数据。已审核的示例包括:
  • account.locked — 账户被锁定
  • mfa.factor.activated — 激活其他 MFA 因素
  • auth.login.failed — 登录失败
两种连接方式读取的数据流相同:用户目录(/api/v1/users)和系统日志(/api/v1/logs)。请参阅集成数据如何转化为信号。

选择连接方式

两种方式所需的访问权限相同,因此选择取决于凭据的处理方式,而不是平台可读取的内容。

方案 A — API 令牌 (SSWS)

推荐。

Living Security 所需信息

前提条件

  • 您必须是 Okta 超级管理员(Super Administrator),才能创建服务账户用户、分配管理员角色并创建 API 令牌。
1

创建用于持有令牌的用户

Okta API 令牌具有创建该令牌的用户的权限,并且在该用户被停用后会失效。请创建专用的服务账户,而不要使用个人管理员账户,以便在人员变动后连接仍能保持有效。
  1. 在管理控制台中,转到 Directory → 人。
  2. 点击 Add person,并创建一个用户,例如 svc-livingsecurity@yourcompany.com。
  3. 激活该账户。
2

分配只读管理员角色

平台仅执行读取操作。授予超出读取范围的权限,会使令牌拥有其从不使用的权限。
  1. 转到 安全 → Administrators。
  2. 点击 Add administrator,并选择上一步中创建的用户。
  3. 分配 Read-only Administrator 角色。
  4. 保存。
如果没有管理员角色,对 Okta Management API 的调用会返回 200 OK 并返回空列表。不会有 403 提示您缺少该角色 — 数据流只会保持为空。
3

创建 API 令牌

  1. 以步骤 1 中的服务账户用户身份登录管理控制台。令牌会继承创建它的账户的权限。
  2. 转到 安全 → API,并打开 Tokens 选项卡。
  3. 点击 Create token,为其命名,例如 Living Security Platform,然后点击 Create token。
  4. 立即复制令牌值 — Okta 仅显示一次,之后不会再次显示。
Okta 会在 API 令牌连续 30 天未使用后将其停用。此集成中的同步至少每天运行一次,因此处于活动状态的连接会使其令牌保持有效。暂停一个月的连接需要新的令牌。
仅当您的 Okta 组织按网络区域限制 API 访问时,上述地址列表才有意义。大多数组织不会这样限制。
4

查找您的租户子域名

您的管理控制台 URL 类似于 https://acme-admin.okta.com。租户子域名为 acme — 不包含 -admin 后缀,不包含 .okta.com,也不包含 https://。
您现已连接到 Okta (SSWS)。

故障排除

令牌无效、已被撤销,或因 30 天未使用而被停用。请以服务账户用户身份创建新令牌,并在该连接中重新输入。
令牌的所有者没有管理员角色。请为服务账户分配 Read-only Administrator(步骤 2)— 缺少该角色时,API 会返回 200 OK 和空列表,而不是错误。
如果创建令牌的用户被停用,令牌将失效。因此,令牌应归属于服务账户,而不是个人。

方案 B — OAuth 2.0 服务应用程序

当您的安全策略不允许使用长期有效的 API 令牌时,请使用此方式。它以客户端 ID 和您自己持有的 RSA 密钥对取代令牌。在平台中,这对应于 设置 → 集成 → 目录 下的 Okta (OAuth 2.0) 图块。 要使用客户端凭据(Client Credentials)向 Okta 进行身份验证,您需要以下信息:
  1. 客户端 ID - Okta API Services 应用程序的唯一标识符。
  2. 私钥 (JWK) - JSON Web Key 格式的 RSA 私钥,其公钥已在您的 Okta 应用程序中注册。
  3. Okta 域名 - 仅填写您的 Okta 租户子域名(例如 dev-12345678),而非完整主机名。
  4. 范围(Scopes) - 以空格分隔的 Okta Management API 范围列表(例如 okta.users.read okta.logs.read)。
本指南将引导您在 Okta 中创建使用 private_key_jwt 身份验证的 API Services 应用程序。

前提条件:

  • 您必须拥有 Okta 账户。可在 developer.okta.com 注册免费的开发者账户。

步骤 1:创建 Okta API Services 应用程序

  1. 登录您的 Okta 管理控制台。
  2. 在左侧边栏中,转到 Applications > Applications。
  3. 点击 Create App Integration。
  4. 选择 API Services 作为登录方式,然后点击 下一页。
  1. 为您的应用程序命名,然后点击 保存。
  2. 在应用程序的 General 选项卡中找到您的 客户端 ID — 您将在最后一步中用到它。
  3. 将 Client authentication 设置为 Public key / Private key。只有这种身份验证方式支持 okta.* 范围。
  1. 禁用 Proof of possession (DPoP) — 不支持该功能。
应用程序必须创建为 API Services 类型。

步骤 2:生成并注册 RSA 密钥对

使用 Okta 密钥生成器
Okta 可以直接在管理控制台中为您生成 RSA 密钥对:
  1. 在管理控制台中,打开您的 API Services 应用程序。
  2. 转到 General 选项卡,并滚动到 PUBLIC KEYS 部分。
  3. 点击 Add Key,然后选择 Generate new key。
  4. 点击 保存 — Okta 会生成密钥对,并仅显示一次 私钥 (JWK)。
  5. 立即复制并保存私钥 JSON — 之后不会再次显示。
  1. 公钥会自动注册到您的应用程序。
请在关闭对话框之前复制私有 JWK。在最后一步中,将其粘贴到 Living Security Platform 的 私钥 字段中。
创建您自己的密钥
Okta 对 API Services 应用程序使用 private_key_jwt。您需要生成 RSA 密钥对,在 Okta 中注册公有 JWK,并将私有 JWK 提供给 Living Security Platform。 生成私有 JWK,请使用以下 Node.js 脚本(需要 Node.js 18+):
在 Okta 中注册公有 JWK:
  1. 在管理控制台中,打开您的 API Services 应用程序。
  2. 转到 General 选项卡,并滚动到 PUBLIC KEYS 部分。
  3. 点击 Add Key,粘贴上述脚本输出的公有 JWK JSON,然后点击 保存。
私有 JWK 是您要粘贴到 Living Security Platform 中的内容。它包含全部密钥材料(d、p、q、dp、dq、qi)以及 kid。请妥善保密。

步骤 3:查找您的 Okta 域名

仅输入您的 Okta 租户子域名 — 即 .okta.com 之前的部分。
  • 在管理控制台中,浏览器地址栏会显示类似 https://dev-12345678-admin.okta.com 的 URL。
  • 您的 Okta 域名仅为子域名(例如 dev-12345678),而不是 dev-12345678.okta.com。
  • 或者,在管理控制台中转到 设置 > Account 查找您的 Okta 域名,然后使用其中的子域名部分。

步骤 4:为应用程序授予 API 范围

Okta 要求每个令牌请求中至少包含一个范围。在应用程序请求特定范围之前,必须先授予这些范围:
  1. 在管理控制台中,转到 Applications > Applications 并打开您的应用程序。
  2. 点击 Okta API Scopes 选项卡。
  3. 授予您的集成所需的范围:okta.users.read 和 okta.logs.read。
完整的可用范围列表请参阅 Okta Management API 参考文档。

步骤 5:为应用程序分配管理员角色

仅授予范围是不够的 — 如果您的应用程序没有管理员角色,Okta Management API 端点(例如 /api/v1/users)会静默返回空的 200 [] 响应。您必须至少分配 Read-Only Administrator:
  1. 在管理控制台中,转到 安全 > Administrators(或转到 Applications > Applications > 您的应用程序 > Admin roles)。
  2. 点击 Add administrator assignment,并选择您的 API Services 应用程序。
  1. 分配 Read-Only Administrator 角色(或更高级别的角色,具体取决于您所需的范围)。
  2. 点击 保存。
如果没有管理员角色,API 调用会返回 200 OK 但结果为空,并且不会出现 403 错误来提示问题所在。

步骤 6:在 Living Security Platform 中输入凭据

获得 客户端 ID、私钥 (JWK)、Okta 域名和范围后:
  1. 打开需要使用 Okta(客户端凭据)进行身份验证的表单。
  2. 输入您的 客户端 ID。
  3. 粘贴您的 私钥 (JWK) — 即上述脚本生成的完整 JSON 对象(单行或格式化均可)。
  4. 将您的 Okta 域名 仅输入为租户子域名(例如 dev-12345678)。
  5. 以空格分隔的列表形式输入范围(例如 okta.users.read okta.logs.read)。
  6. 提交表单,即可成功通过身份验证。
您现已连接到 Okta(客户端凭据)。
本文档的部分内容改编自 Nango,并根据 Elastic License 2.0 使用。