Appearance
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 中:
- 进入 Applications → Applications。
- 选择 Create App integration。
- Sign-in method 选择 OIDC - OpenID Connect。
- Application type 选择 Native Application。
- 给应用命名,例如
Kiro-OIDC。 - 在 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-OIDCapplication 的 Client ID。
填入 Kiro profile 后启用。
接着在 Kiro console 的 Identity management → Domains 中添加企业域名,并根据 Kiro 提供的 verification token 到 DNS provider 中创建 TXT record。验证成功后,domain 状态会变成 Verified。
生成 SCIM token
在 Kiro console 中:
- 打开 Settings。
- 进入 Identity Management → Access Tokens。
- Generate Token。
- 复制 token。
- 复制 SCIM Endpoint。
该 token 用于 Okta SCIM provisioning,属于长期凭证,应按密码级别保护。
创建 SCIM provisioning application
在 Okta Admin Console 中:
- 进入 Applications → Browse App Catalog。
- 搜索并添加 AWS IAM Identity Center integration。
- Sign On 中的 SAML 设置可以保持默认,因为 Kiro 登录使用前面的 OIDC app。
- 进入 Provisioning → Integration。
- 启用 API integration。
- Base URL 填 Kiro SCIM Endpoint。
- API Token 填 Kiro 生成的 token。
- Test API Credentials。
- Save。
然后在 Provisioning → To App 中启用:
- Create Users。
- Update User Attributes。
同步 groups
如果要同步 Okta groups,需要:
- 在 AWS IAM Identity Center app 的 Provisioning → To App 中移除
department和employeeNumberattribute mapping。 - 在 Assignments 中把需要同步的 groups 分配给应用。
- 进入 Push Groups。
- 选择 Find groups by name。
- 添加要 push 的 groups。
- 确认 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 assignments | 在 Kiro-OIDC 的 Assignments 中添加用户。 |
| 用户未同步到 Kiro | SCIM 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 手动释放。