OAuth 2.0 SSO
当企业身份系统提供授权码登录和用户信息接口时,可以通过 OAuth2 接入。管理员需要把同一个应用的凭据、三个接口地址和用户字段填入千问办公,再把千问办公生成的回调链接登记到身份系统。
先向身份系统管理员取得这些信息
| 信息 | 用来做什么 |
|---|---|
| Client ID、Client Secret | 标识应用并验证调用身份 |
| 认证端点 URL | 打开成员登录与授权页面 |
| Token 端点 URL | 用授权码换取访问令牌 |
| 用户信息端点 URL | 读取已登录成员的资料,也称 UserInfo |
| Scopes、Token 认证方式、PKCE | 与身份平台的应用设置一致 |
| 一份脱敏的 UserInfo JSON | 确认用户 ID、姓名、邮箱等字段在哪里 |
第一步:填写应用和接口
- 进入【用户管理 → 身份认证 → SSO 登录】,点击【新增认证源】。
- 选择“通用 OAuth2 / OIDC”,填写名称,将“协议类型”设为“OAuth2”。
- 在“应用凭证”填写 Client ID、Client Secret。按身份平台要求填写 Scopes;OAuth2 不要求固定包含
openid。 - 选择 Token 端点认证方式:Basic Auth 在请求头中传应用凭据,Form Post 在表单中传。PKCE 选择 S256 或关闭,与对方配置保持一致。
- 在“Endpoint 设置”选择 UserInfo 接口 Token 携带方式,并填入认证、Token、用户信息三个端点地址。

管理后台:OAuth2 的应用凭证与三个端点配置。
Token 端点认证方式传递的是应用凭据;UserInfo 令牌携带方式传递的是登录后取得的访问令牌,两者不要混用。
第二步:对应用户字段
- 在“关联规则”填写来源字段名或对象点路径。输入框已处理
user.前缀,不需要重复填写。 - 例如 UserInfo 返回
{"profile":{"id":"u123","name":"陈晨"},"email":"chenchen@example.com"},可分别填写profile.id、profile.name、email。 - 第三方用户 ID 应选择稳定、唯一的值;不要使用可能重名或改动的姓名。
- 保留第三方用户 ID 和姓名映射,并在邮箱、手机号、工号、账号中至少映射一项。路径区分大小写,不支持数组下标或脚本。
- 需要首次登录创建账号时,开启“自动创建用户”,选择默认部门;需要同时尝试分配席位时,再开启“自动授予席位”。
第三步:保存后登记回调链接
- 点击【保存配置】。新建认证源的回调链接在保存后生成。
- 重新打开该认证源,复制完整回调链接。
- 回到身份系统,在同一应用的允许回调地址中登记该链接并保存。
- 返回千问办公启用该认证源,再到“登录方式”开启 SSO 登录。
- 请普通成员完成一次真实登录,检查能否返回企业、关联正确账号及取得所需资料。
【配置校验】仅作配置与接口响应诊断,不会替成员完成登录,也不能证明回调和字段映射正确。企业同一时间只启用一个 SSO 认证源。
失败时按所在阶段检查
| 停在哪里 | 优先检查 |
|---|---|
| 登录页面打不开 | 认证端点和身份平台应用状态 |
| 授权后无法返回 | 完整回调地址是否在同一应用中登记 |
| 交换令牌失败 | Client ID/Secret、Basic Auth/Form Post、PKCE |
| 读取资料失败 | UserInfo 地址、令牌携带方式和 Scopes |
| 无法关联或自动创建用户 | 唯一标识、实际字段值、默认部门及身份冲突 |
已有用户与删除记录
SSO 只通过三方 ID 匹配用户,匹配后的处理如下:
| 匹配结果 | 处理方式 |
|---|---|
| 命中未删除用户,其他身份字段无冲突 | 完成登录,保留已有资料和同步来源 |
| 返回的账号、邮箱、手机号或工号与其他用户冲突 | 拒绝本次登录,管理员处理冲突后再试 |
| 未命中用户 | 按「自动创建用户」设置处理 |
| 三方 ID 只有已删除记录 | 不恢复旧 QID;自动创建关闭时拒绝登录,开启且当前资料无冲突时创建新用户和新 QID |
新账号使用本次登录返回的资料、当前默认部门和席位策略,不继承旧账号的角色、密码、席位或部门。完整规则见身份认证。
返回:身份认证-概述