在 Okta Admin Console 中,用 OpenID Connect 创建 Aiyori 应用(SSO),再用 SCIM 2.0 把已分配的员工和组发送到 Aiyori。
通用的值和遇到问题时要检查的地方,见连接公司的身份管理平台页面。画面名称以 2026 年 10 月时 Okta Admin Console 中的名称为准。
需要准备的
- 在 Okta Admin Console(https://(组织)-admin.okta.com)中,拥有 Application Administrator 或更高的角色。
- SSO 在 Okta Single Sign-On 中即可使用。SCIM 需要 Lifecycle Management。
- Aiyori 组织的管理员能打开讲师画面的“设置”→“连接公司的身份管理平台”。
1. 创建应用(OpenID Connect)
- Admin Console → Applications → Applications → Create App Integration。
- Sign-in method 选择 OIDC - OpenID Connect,Application type 选择 Web Application → Next。
- 填入下表的值,然后 Save。
- 在 General 选项卡中,记下 Client ID 和 Client secret。Client secret 可以用该行的眼睛图标显示,然后复制。
- 在 Client Credentials 中按 Edit → 勾选 Require PKCE as additional verification → Save。Client authentication 保持 Client secret(默认)不变。Aiyori 会发送 PKCE。
- 如果要让员工从 Okta 仪表板的磁贴登录(可选),把 Login initiated by 设为 Either Okta or App,并在 Initiate login URI 中填入 https://app.aiyori.app/
api/ web/ sso/ start?code=(组织代码)。
- App integration name
- Aiyori
- Grant type
- 只选 Authorization Code(默认)
- Sign-in redirect URIs
- https://app.aiyori.app/
api/ web/ sso/ callback - Sign-out redirect URIs
- 可以留空
- Assignments
- Limit access to selected groups(之后再分配),或 Skip group assignment for now
2. 填入 Aiyori(SSO)
在 Aiyori 的讲师画面 →“设置”→“连接公司的身份管理平台”→“SSO”中填入,然后按“保存”。
- 颁发者 URL(Issuer)
- https://(组织).okta.com(Okta 的组织授权服务器,即 Admin Console 的 URL 去掉 -admin)。公司使用自定义域名时,填该 URL。
- 客户端 ID、客户端密钥
- 在第 1 节中记下的值
- 允许的邮箱域名
- 公司邮箱的域名(每行 1 个)
颁发者也可以是末尾带 /oauth2/default 的自定义授权服务器(适用于签约了 API Access Management 的公司)。要确定用哪个,请在浏览器中打开颁发者 URL 后加 /.well-known/openid-configuration,填入与其中 issuer 值完全相同的内容。
在 Assignments 选项卡中分配一位测试人员。如果此人能从 Aiyori 的登录画面 →“使用公司账号登录”→ 组织代码 → Okta 登录 → 回到 Aiyori,就说明已经连接成功。管理员也可以用“自己试着登录”中的“用我的公司账号试一下”测试。
3. SCIM(Provisioning)
- 在 Aiyori 的“连接公司的身份管理平台”→“SCIM”中,在“密钥名称”里填入 Okta,按“创建密钥”→ 记下显示的密钥(只在此画面显示)。
- 在 Okta 中打开 Aiyori 应用 → General 选项卡 → App Settings 的 Edit → 把 Provisioning 设为 SCIM → Save。如果没有这个选项,请按下面第 4 节的方法,另建一个只用于 SCIM 的应用来连接。
- Provisioning 选项卡 → Integration → Edit,填入下表的值,然后运行 Test Connector Configuration。Create Users、Update User Attributes 和 Push Groups 都打上勾后,Save。
- Provisioning 选项卡 → To App → Edit → 把 Create Users、Update User Attributes 和 Deactivate Users 设为 Enable → Save。不开启 Sync Password,并关闭新建用户时设置密码的选项(Aiyori 不保存密码)。
- 属性映射(Aiyori User Profile Mappings)保持默认即可。请确认 userName 是公司邮箱地址(默认是 Okta 的用户名,通常就是邮箱地址)。
- 在 Assignments 选项卡中,分配要使用 Aiyori 的组。被分配的人会成为 Aiyori 的学员。
- Push Groups 选项卡 → + Push Groups → 选择部门等组 → Save。这些组会成为 Aiyori 的小组。
- SCIM connector base URL
- https://app.aiyori.app/
api/ scim/ v2 - Unique identifier field for users
- userName
- Supported provisioning actions
- 勾选 Push New Users、Push Profile Updates 和 Push Groups(不需要 Import New Users and Profile Updates)
- Authentication Mode
- HTTP Header。在 Authorization(Bearer)中填入第 1 步记下的密钥
4. 只为 SCIM 另建应用(第 3 节的选项没有出现时)
OpenID Connect 应用的 General 选项卡中,有时没有 Provisioning 选项。这时,只把 SCIM 改用 Okta 目录中的应用来连接。
- Applications → Applications → Browse App Catalog → 搜索 SCIM 2.0 Test App → SCIM 2.0 Test App (Header Auth) → Add Integration。
- General settings:Application label 设为 Aiyori SCIM。勾选 Do not display application icon to users(不让学员看到磁贴),取消勾选 Browser plugin auto-submit,然后 Next。
- Sign-on options 保持默认即可(登录通过第 1 节的应用进行,这里不使用)。把 Application username format 设为 Email,然后 Done。
- Provisioning 选项卡 → Configure API Integration → 勾选 Enable API integration → Base URL 填入 https://app.aiyori.app/
api/ scim/ v2,API Token 中直接粘贴第 3 节第 1 步记下的密钥 → Test API Credentials → Save。 - 其余与第 3 节的第 4–7 步相同(To App、属性映射、分配、Push Groups)。
- 给 SSO 应用(Aiyori)和 SCIM 应用(Aiyori SCIM)分配相同的组。
此应用会直接发送 API Token 的值,前面不加 Bearer。Aiyori 两种形式都接受。
5. 连接当天要确认的事
- 被分配的 1 个人能用公司账号登录。未被分配的人会被拦在 Okta 的画面上。
- 被分配的人出现在 Aiyori 的学员中,并且在推送的小组里。
- 取消此人的分配(或在 Okta 中 Deactivate)后,在 Aiyori 中显示为“已因公司设置停用”,无法登录。恢复后又能登录。
使用 Okta 时的规则
- 使用的 SCIM 操作为:创建用户、更新属性、停用(Deactivate)和推送组。不使用密码同步,也不从 Aiyori 导入到 Okta(Import)。
- 取消分配时,Okta 发送 active: false(不发送 DELETE)。在 Aiyori 中,两者都会停用该学员,培训记录会保留。
- 通过 SSO 登录的人,会按公司邮箱地址关联到由 SCIM 创建的学员。
- SCIM 密钥没有有效期。更换时,先在 Aiyori 中创建新密钥,重新填入 Okta 的 Integration,再把旧密钥设为“停用”。
