Skip to content

Kiro CLI Enterprise 连接 Okta 时,需要分别配置 OIDC 登录应用和 SCIM provisioning 应用。OIDC 应用负责用户登录和 Kiro scopes 授权,SCIM 应用负责把 Okta users 和 groups 同步到 Kiro profile。管理员完成域名验证后即可订阅用户或 groups。

Kiro CLI Enterprise Okta:连接 OIDC 和 SCIM 应用

如果团队使用 Okta 管理身份,可以把 Okta 直接连接到 Kiro Enterprise。和 Entra ID 不同,Okta 场景通常需要两个应用:

  • OIDC application:用于用户登录 Kiro。
  • SCIM provisioning application:用于同步 users 和 groups 到 Kiro。

这两个应用共同完成身份认证和订阅对象同步。

为什么需要两个 Okta 应用

Kiro 通过 OIDC 完成登录授权,但 users/groups 的生命周期同步依赖 SCIM。Okta 官方流程中,SCIM provisioning 可以借用 Okta App Catalog 里的 AWS IAM Identity Center integration,但登录仍由单独的 Kiro OIDC app 完成。

因此不要只创建一个应用,否则可能出现“能登录但用户不同步”或“用户同步了但无法登录”的问题。

创建 OIDC application

在 Okta Admin Console 中:

  1. 进入 Applications → Applications。
  2. 选择 Create App integration。
  3. Sign-in method 选择 OIDC - OpenID Connect。
  4. Application type 选择 Native Application。
  5. 给应用命名,例如 Kiro-OIDC
  6. 在 Grant type 中勾选 Refresh Token。

添加 Sign-in redirect URI:

text
kiro://kiro.oauth/callback
http://localhost:3128/oauth/callback
http://localhost:4649/oauth/callback
http://localhost:6588/oauth/callback
http://localhost:8008/oauth/callback
http://localhost:9091/oauth/callback
http://localhost:49153/oauth/callback
http://localhost:50153/oauth/callback
http://localhost:51153/oauth/callback
http://localhost:52153/oauth/callback
http://localhost:53153/oauth/callback

创建完成后,在 Assignments 中添加需要访问 Kiro 的 users 或 groups。

配置 Kiro custom scopes

在 Okta Admin Console 中进入 Security → API → Authorization Servers,创建一个 Authorization Server。

在 Scopes 中添加:

Scope用途
codewhisperer:completions授权 Kiro inline code completion。
codewhisperer:conversations授权 Kiro chat 和 conversation。

然后在 Access Policies 中给 Kiro-OIDC 添加 policy,并创建 rule,允许这些 scopes:

text
codewhisperer:completions
codewhisperer:conversations
offline_access

可以用 Token Preview 验证 token payload 中是否包含 issuer 和对应 scopes。

创建 Kiro profile

在 Kiro console 中选择连接 existing external Identity Provider。

需要从 Okta 复制:

  • Authorization Server 的 Issuer URI。
  • Kiro-OIDC application 的 Client ID。

填入 Kiro profile 后启用。

接着在 Kiro console 的 Identity management → Domains 中添加企业域名,并根据 Kiro 提供的 verification token 到 DNS provider 中创建 TXT record。验证成功后,domain 状态会变成 Verified。

生成 SCIM token

在 Kiro console 中:

  1. 打开 Settings。
  2. 进入 Identity Management → Access Tokens。
  3. Generate Token。
  4. 复制 token。
  5. 复制 SCIM Endpoint。

该 token 用于 Okta SCIM provisioning,属于长期凭证,应按密码级别保护。

创建 SCIM provisioning application

在 Okta Admin Console 中:

  1. 进入 Applications → Browse App Catalog。
  2. 搜索并添加 AWS IAM Identity Center integration。
  3. Sign On 中的 SAML 设置可以保持默认,因为 Kiro 登录使用前面的 OIDC app。
  4. 进入 Provisioning → Integration。
  5. 启用 API integration。
  6. Base URL 填 Kiro SCIM Endpoint。
  7. API Token 填 Kiro 生成的 token。
  8. Test API Credentials。
  9. Save。

然后在 Provisioning → To App 中启用:

  • Create Users。
  • Update User Attributes。

同步 groups

如果要同步 Okta groups,需要:

  1. 在 AWS IAM Identity Center app 的 Provisioning → To App 中移除 departmentemployeeNumber attribute mapping。
  2. 在 Assignments 中把需要同步的 groups 分配给应用。
  3. 进入 Push Groups。
  4. 选择 Find groups by name。
  5. 添加要 push 的 groups。
  6. 确认 group status 为 Active。

同步完成后,Kiro console 中会出现这些 users 和 groups,可用于分配 Kiro subscription tier。

安全注意事项

  • 不要把无关用户加入 Kiro OIDC 或 SCIM 应用。
  • 用户必须在 OIDC 和 SCIM provisioning 两边都配置正确。
  • 只添加 Kiro 指定的 redirect URI。
  • 删除 Okta assignment 后,用户已有 session 不会立刻被终止,会在下次 refresh token 刷新时失效。
  • 删除 Okta assignment 不会自动释放 Kiro seat,需要在 Kiro console 中删除 subscription。
  • 删除 Kiro profile 后如果复用同一个 Okta app,group membership 可能无法正常同步,应重新 provisioning。

常见排障

现象常见原因处理方式
用户无法登录没加入 OIDC app assignmentsKiro-OIDC 的 Assignments 中添加用户。
用户未同步到 KiroSCIM app 没启用 Create Users在 Provisioning → To App 中启用 Create Users 和 Update User Attributes。
group 不同步Push Groups 未配置在 Okta Push Groups 中添加需要同步的 group。
已删除用户仍占 seat只删了 Okta assignment到 Kiro console 中手动删除 subscription。

常见问题

Q: Kiro 连接 Okta 为什么要两个应用?

A: OIDC app 负责登录,SCIM app 负责 users/groups 同步。两者用途不同,缺一会导致登录或订阅对象管理不完整。

Q: Okta group 订阅是按 group 计费吗?

A: 不是。Kiro 会把 group 中的用户逐个订阅,计费仍按用户计算。

Q: 从 Okta 移除用户后 Kiro 会马上断开 session 吗?

A: 不会立即断开已有 session,但后续 refresh token 刷新会失败;subscription seat 仍需在 Kiro console 手动释放。