Appearance
将 Okta 直连 Kiro Enterprise 需要四个阶段:创建 OIDC 应用用于用户登录、配置自定义 scopes 和访问策略、创建 Kiro Profile 并验证域名、以及创建 SCIM 预配应用同步用户和 group。Okta 需要两个独立应用分别处理登录和预配。
Kiro Enterprise:连接 Okta IdP
将 Okta 与 Kiro Profile 连接需要完成以下四个步骤:
- 创建 OIDC Okta 应用
- 设置 OIDC 应用的自定义 scopes
- 设置 Kiro Profile
- 创建 SCIM 预配应用
为什么需要两个应用
使用 Okta 时,需要创建两个应用:一个 OIDC 应用用于用户登录,一个 SCIM 预配应用(使用 Okta App Catalog 中的 AWS IAM Identity Center 集成)用于将用户和 group 同步到 Kiro。
第一步:创建 OIDC 应用
创建新应用集成
在 Okta Admin Console 中,进入 Applications → Applications,选择 "Create App integration"。
- Sign-in method 选择 "OIDC - OpenID Connect"
- Application type 选择 "Native Application"
设置描述性名称,例如 Kiro-OIDC,在 Grant type 中勾选 "Refresh Token",其余字段保持默认。
添加重定向 URI:
首先添加 kiro://kiro.oauth/callback。
然后添加以下 10 个 Sign-in redirect URI(格式为 http://localhost:{port}/oauth/callback,port 分别为):
- 3128、4649、6588、8008、9091
- 49153、50153、51153、52153、53153
确保勾选 "Skip group assignment for now",选择 "Save" 完成创建。
添加用户和 group
在应用的 "Assignments" 标签中,选择 "Assign" 按钮,按照指引添加应该有权访问 Kiro 的用户和 group。
第二步:设置自定义 scopes
创建 Kiro 专用 scopes
你需要创建两个 scope,定义用户身份访问 Kiro 所需的授权:
codewhisperer:completions:授权用户访问内联代码补全功能codewhisperer:conversations:授权用户访问对话功能
只授予你的组织实际需要的 scopes。
在 Okta Admin Console 中,进入 Security → API,在 "Authorization Servers" 标签中选择 "Add Authorization Server",填写名称和描述后保存。
在 "Scopes" 标签中选择 "Add Scope",添加 codewhisperer:completions,将 "User content" 设为 "Implicit",其余字段保持默认,选择 "Create"。按同样步骤添加 codewhisperer:conversations。
添加访问策略
在 "Access Policies" 标签中选择 "Add Policy",设置描述性名称,并将策略分配给你创建的 Kiro OIDC 应用(Kiro-OIDC)。
策略创建后,选择 "Add rule"。除了 "Scopes requested" 字段外保持默认——选择 "The following scopes:" 并添加:
codewhisperer:completionscodewhisperer:conversationsoffline_access
选择 "Create rule" 完成。
验证配置:在 "Token Preview" 标签中,OAuth/OIDC client 选择 Kiro-OIDC,Grant type 选择 Authorization Code,Scopes 选择两个 codewhisperer scopes 和 offline_access,点击 "Preview Token"。如果配置正确,Payload 中会包含 iss 和 scp(含三个 scopes)字段。
第三步:设置 Kiro Profile
创建 Kiro Profile
在 Kiro console 中选择 "Sign up for Kiro",选择 "Set up application as Admin",再选择 "Connect an existing external Identity provider"。
在 Okta Admin Console 的 Security → API 中,选择你为 Kiro 创建的 Authorization Server,复制 Issuer URI,填入 Kiro Profile 的 Issuer URI 字段。
在 Applications 中打开 Kiro OIDC 应用,复制 Client ID,填入 Kiro Profile 的 Client ID 字段。选择 "Enable" 完成创建。
添加并验证域名
在 Kiro console 中选择 Settings,在 Identity management → Domains 中选择 "Add domain",添加公司域名。
系统会生成验证 token。在 DNS 提供商(如 Amazon Route53)中创建 TXT 记录,填入该 token。几分钟后状态变为 "Verified"。
生成 SCIM Access Token
在 Kiro console 中,进入 Settings → Identity Management → Access Tokens,选择 "Generate Token" 生成 SCIM 预配用的 access token。复制该 token,第四步配置预配时需要用到。
第四步:创建 SCIM 预配应用
创建应用集成
在 Okta Admin Console 中,进入 Applications → Applications,选择 "Browse App Catalog"。搜索 "AWS IAM Identity Center" 并选择 "Add Integration"。
默认 Application label 为 "AWS IAM Identity Center",可以修改或保持默认,选择 "Done"。
在 "Sign On" 标签中,SAML 设置(ACS URL、Issuer URL)保持默认即可——Kiro 使用 OIDC 应用登录,不使用 SAML。
配置 SCIM 预配
在应用的 "Provisioning" 标签中,选择 "Integration" 部分,点击 "Configure API integration"。
勾选 "Enable API integration",然后:
- Base URL:填入 Kiro console 的 SCIM endpoint(Settings → Identity Management → SCIM Endpoint)
- API Token:填入第三步生成的 access token
- 选择 "Test API Credentials",确认成功
- 选择 "Save"
在 Provisioning → To App → Edit 中,启用:
- Create Users
- Update User Attributes
选择 "Save"。
同步 Groups(可选)
如果要将 Okta groups 同步到 Kiro,需要先完成一个前置操作:
在 AWS IAM Identity Center 应用的 "Provisioning → To App" 中,滚动到 AWS IAM Identity Center Attribute Mappings 部分,移除 "department" 和 "employeeNumber" 两个属性。
然后分配 group:在 "Assignments" 标签中选择 "Assign" → "Assign to Groups",选择需要同步的 group 并完成步骤。
最后设置 group 同步:
- 选择 "Push Groups" 标签
- 点击 "Push Groups" 按钮,选择 "Find groups by name"
- 选择要推送的 group,选择 "Save"
- 确认 Group status 显示为 Active
完成后,按照 订阅指南 为用户创建 Kiro 订阅。
安全注意事项
Session 管理:Kiro 使用 OIDC refresh token 维持 session。你无法从 Kiro console 强制撤销活跃 session——移除 Okta OIDC 应用中的用户后,下次 token 刷新时访问会被拒绝(Applications → Kiro OIDC application → Assignments,选择用户旁的 × 移除)。
Profile 删除警告:删除 Kiro profile 后用同一 Okta 应用创建新 profile,group 成员关系不会同步,必须完整重新预配。
防止未授权访问:不要将不应访问 Kiro 的用户添加到 Kiro 应用。创建基于 group 的订阅后,在 Kiro console Subscriptions 标签中确认没有意外订阅的用户。
移除用户:从 Kiro OIDC 应用的 Assignments 中移除用户后,后续登录会被阻止,但现有 session 会在下次 token 刷新前保持有效。还需手动在 Kiro console 删除该用户订阅以释放席位。
故障排查
| 遗漏步骤 | 表现 | 修复方法 |
|---|---|---|
| 用户未加入 OIDC 应用 | 用户无法登录 | 在 OIDC 应用的 Assignments 标签中添加用户 |
| 未启用预配的 Create Users | 用户未同步到 Kiro | 在 SCIM 预配应用中,进入 Provisioning > To App,启用 "Create Users" |
| 未移除 department/employeeNumber 属性 | Group 同步失败 | 在 Provisioning → To App 的 Attribute Mappings 中移除这两个属性 |
| OIDC 应用和 SCIM 应用中的用户不一致 | 部分用户可以登录但未预配 | 确保用户同时在 OIDC 应用和 SCIM 预配应用中 |
常见问题
Q: 为什么 Okta 需要两个独立应用?
A: OIDC 应用处理用户登录认证流程,SCIM 预配应用负责将用户和 group 同步到 Kiro 目录。两者功能不同,Okta 的设计需要分开配置。
Q: Group 变更多久同步到 Kiro?
A: Okta 会在 group 成员变更时立即推送到 Kiro,不像 Entra ID 有 40 分钟延迟。
Q: SCIM token 需要定期轮换吗?
A: 是的,SCIM token 是长期凭据,需按组织安全策略手动轮换。如果 token 泄露,立即在 Kiro console 撤销并生成新 token。