概述
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 令牌具有创建该令牌的用户的权限,并且在该用户被停用后会失效。请创建专用的服务账户,而不要使用个人管理员账户,以便在人员变动后连接仍能保持有效。
- 在管理控制台中,转到 Directory → 人。
- 点击 Add person,并创建一个用户,例如
svc-livingsecurity@yourcompany.com。 - 激活该账户。
2
分配只读管理员角色
平台仅执行读取操作。授予超出读取范围的权限,会使令牌拥有其从不使用的权限。
- 转到 安全 → Administrators。
- 点击 Add administrator,并选择上一步中创建的用户。
- 分配 Read-only Administrator 角色。
- 保存。
如果没有管理员角色,对 Okta Management API 的调用会返回
200 OK 并返回空列表。不会有 403 提示您缺少该角色 — 数据流只会保持为空。3
创建 API 令牌
- 以步骤 1 中的服务账户用户身份登录管理控制台。令牌会继承创建它的账户的权限。
- 转到 安全 → API,并打开 Tokens 选项卡。
- 点击 Create token,为其命名,例如
Living Security Platform,然后点击 Create token。 - 立即复制令牌值 — Okta 仅显示一次,之后不会再次显示。
仅当您的 Okta 组织按网络区域限制 API 访问时,上述地址列表才有意义。大多数组织不会这样限制。
4
查找您的租户子域名
您的管理控制台 URL 类似于
https://acme-admin.okta.com。租户子域名为 acme — 不包含 -admin 后缀,不包含 .okta.com,也不包含 https://。故障排除
已连接,但所有数据流均为空
已连接,但所有数据流均为空
令牌的所有者没有管理员角色。请为服务账户分配 Read-only Administrator(步骤 2)— 缺少该角色时,API 会返回
200 OK 和空列表,而不是错误。人员变动后同步失败
人员变动后同步失败
如果创建令牌的用户被停用,令牌将失效。因此,令牌应归属于服务账户,而不是个人。
方案 B — OAuth 2.0 服务应用程序
当您的安全策略不允许使用长期有效的 API 令牌时,请使用此方式。它以客户端 ID 和您自己持有的 RSA 密钥对取代令牌。在平台中,这对应于 设置 → 集成 → 目录 下的 Okta (OAuth 2.0) 图块。 要使用客户端凭据(Client Credentials)向 Okta 进行身份验证,您需要以下信息:- 客户端 ID - Okta API Services 应用程序的唯一标识符。
- 私钥 (JWK) - JSON Web Key 格式的 RSA 私钥,其公钥已在您的 Okta 应用程序中注册。
- Okta 域名 - 仅填写您的 Okta 租户子域名(例如
dev-12345678),而非完整主机名。 - 范围(Scopes) - 以空格分隔的 Okta Management API 范围列表(例如
okta.users.read okta.logs.read)。
private_key_jwt 身份验证的 API Services 应用程序。
前提条件:
- 您必须拥有 Okta 账户。可在 developer.okta.com 注册免费的开发者账户。
步骤 1:创建 Okta API Services 应用程序
- 登录您的 Okta 管理控制台。
- 在左侧边栏中,转到 Applications > Applications。
- 点击 Create App Integration。
- 选择 API Services 作为登录方式,然后点击 下一页。
- 为您的应用程序命名,然后点击 保存。
- 在应用程序的 General 选项卡中找到您的 客户端 ID — 您将在最后一步中用到它。
- 将 Client authentication 设置为 Public key / Private key。只有这种身份验证方式支持
okta.*范围。
- 禁用 Proof of possession (DPoP) — 不支持该功能。
应用程序必须创建为 API Services 类型。
步骤 2:生成并注册 RSA 密钥对
使用 Okta 密钥生成器
Okta 可以直接在管理控制台中为您生成 RSA 密钥对:- 在管理控制台中,打开您的 API Services 应用程序。
- 转到 General 选项卡,并滚动到 PUBLIC KEYS 部分。
- 点击 Add Key,然后选择 Generate new key。
- 点击 保存 — Okta 会生成密钥对,并仅显示一次 私钥 (JWK)。
- 立即复制并保存私钥 JSON — 之后不会再次显示。
- 公钥会自动注册到您的应用程序。
请在关闭对话框之前复制私有 JWK。在最后一步中,将其粘贴到 Living Security Platform 的 私钥 字段中。
创建您自己的密钥
Okta 对 API Services 应用程序使用private_key_jwt。您需要生成 RSA 密钥对,在 Okta 中注册公有 JWK,并将私有 JWK 提供给 Living Security Platform。
生成私有 JWK,请使用以下 Node.js 脚本(需要 Node.js 18+):
- 在管理控制台中,打开您的 API Services 应用程序。
- 转到 General 选项卡,并滚动到 PUBLIC KEYS 部分。
- 点击 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 要求每个令牌请求中至少包含一个范围。在应用程序请求特定范围之前,必须先授予这些范围:- 在管理控制台中,转到 Applications > Applications 并打开您的应用程序。
- 点击 Okta API Scopes 选项卡。
- 授予您的集成所需的范围:
okta.users.read和okta.logs.read。
步骤 5:为应用程序分配管理员角色
仅授予范围是不够的 — 如果您的应用程序没有管理员角色,Okta Management API 端点(例如/api/v1/users)会静默返回空的 200 [] 响应。您必须至少分配 Read-Only Administrator:
- 在管理控制台中,转到 安全 > Administrators(或转到 Applications > Applications > 您的应用程序 > Admin roles)。
- 点击 Add administrator assignment,并选择您的 API Services 应用程序。
- 分配 Read-Only Administrator 角色(或更高级别的角色,具体取决于您所需的范围)。
- 点击 保存。
如果没有管理员角色,API 调用会返回
200 OK 但结果为空,并且不会出现 403 错误来提示问题所在。步骤 6:在 Living Security Platform 中输入凭据
获得 客户端 ID、私钥 (JWK)、Okta 域名和范围后:- 打开需要使用 Okta(客户端凭据)进行身份验证的表单。
- 输入您的 客户端 ID。
- 粘贴您的 私钥 (JWK) — 即上述脚本生成的完整 JSON 对象(单行或格式化均可)。
- 将您的 Okta 域名 仅输入为租户子域名(例如
dev-12345678)。 - 以空格分隔的列表形式输入范围(例如
okta.users.read okta.logs.read)。 - 提交表单,即可成功通过身份验证。
本文档的部分内容改编自 Nango,并根据 Elastic License 2.0 使用。

