You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
19 lines
1.3 KiB
19 lines
1.3 KiB
|
1 month ago
|
# 0009. 免登复用扫码登录端点,不新增独立 SSO 端点
|
||
|
|
|
||
|
|
状态: 已接受
|
||
|
|
|
||
|
|
钉钉"免登"指用户在浏览器侧已登录钉钉后访问 CRM,前端重定向到钉钉 OAuth 授权页,钉钉检测到已登录态后自动重定向回 CRM 并携带 authCode。需要确定后端是否为免登新增独立端点。
|
||
|
|
|
||
|
|
## 决策
|
||
|
|
|
||
|
|
免登复用现有 `POST /api/auth/login/dingtalk` 端点,不新增独立的 SSO 端点。两种场景(扫码登录 / OAuth 重定向免登)的 authCode 均通过钉钉 `oauth2/userAccessToken` API 换取用户级 accessToken,后端处理逻辑完全一致,不需要区分来源。
|
||
|
|
|
||
|
|
## 考虑过的替代
|
||
|
|
|
||
|
|
- 新增 `POST /api/auth/login/dingtalk/sso` 独立端点——被否,逻辑与扫码登录完全相同,多出的端点只在日志/埋点上区分来源,代价大于收益。
|
||
|
|
- 新增 JS-SDK 签名端点支持钉钉客户端内免登——被否,用户选择浏览器 OAuth 重定向方案,不需要 JS-SDK(dd.config 鉴权),后端无需新增 jsapi ticket 签名能力。
|
||
|
|
|
||
|
|
## 后果
|
||
|
|
|
||
|
|
前端自行管理 OAuth 重定向 URL 和 clientId(clientId 是公开值);后端零改动。若后续需要支持钉钉桌面客户端内 H5 免登(JS-SDK `requestAuthCode`),则需新增 JS-SDK 签名端点(获取 jsapi ticket + SHA1 签名 + 返回 corpId/agentId/nonce/timestamp),届时另起 ADR。
|