OAuth Client 是什么
一句话总结
OAuth Client 就是 SP,只是 Frappe 里叫这个名字。它是注册在 IDP 上的一个”信任凭证”——每个要接 SSO 的外部应用都要在这里登记,拿到自己的 client_id 和 client_secret。
🤔 为什么会有它 / 解决了什么问题
IDP 不能随便给任何一个应用签发令牌——否则恶意应用也能冒充你登录。Client 注册就是 IDP 的”白名单”:只有登记过的应用,IDP 才信任它、才给它发令牌。
🔍 具体原理 / 运作逻辑
Frappe 的 OAuth Client Doctype 存了每个外部应用的关键信息:
| 字段 | 作用 |
|---|---|
app_name | 应用名字(给人看的) |
grant_type | 授权方式(Authorization Code / Implicit) |
response_type | Code 还是 Token |
scopes | 权限范围,OIDC 至少要 openid |
redirect_uris | 登录后跳回哪里(必须精确匹配) |
default_redirect_uri | 默认回调地址 |
skip_authorization | 跳过用户确认页面 |
创建后会生成 client_id(记录名)和 client_secret(10 位随机哈希)。外部应用拿着这两个值 + 端点地址,就能走完整的 Authorization Code Flow。
和 SP 的关系
OAuth Client 和 SP 是一个东西,只是叫法不同。OIDC 标准协议里叫 Client 或 Relying Party,Frappe 的 Doctype 也叫 OAuth Client。SP 是 SSO 架构层面的统称。两者指代同一件事:信任 IDP 的外部应用。
🔗 关联 / 经常一起出现的概念
- SP:同一个东西,架构层面的统称
- IDP:Client 的另一半,签发令牌的那个
- Authorization Code Flow:Client 使用的认证流程
- OIDC:Client 和 IDP 之间的通信协议
📎 记忆锚点
OAuth Client = 酒店登记的访客名单。不在名单上的人(应用),前台(IDP)不给房卡。
📝 更新日志
| 日期 | 改动 | 原因 |
|---|---|---|
| 2026-07-09 | 首次创建 | Frappe SSO/OIDC 集成 |