Frappe 框架使用 oauthlib 来管理 OAuth2 相关需求。一个 Frappe 实例可以同时充当以下所有角色:
- 资源服务器:存放资源,例如你 DocType 中的数据。
- 授权服务器:颁发令牌以访问某些资源的服务器。
- 客户端:需要访问资源服务器上某些资源的应用。
与上述角色相关的 DocType:
- 通用
- OAuth 设置:用于配置与这三种角色相关的某些 OAuth 功能。
- 授权服务器
- OAuth 客户端:记录在 Frappe 实例中注册的客户端。
- OAuth 持有者令牌:在此维护发放给已注册客户端的令牌。
- OAuth 授权码:跟踪客户端用于换取令牌的 OAuth 授权码。
- OAuth 提供方设置:允许跳过授权。
[DEPRECATED]请改用 OAuth 设置。
- 客户端
- 已连接应用:记录此 Frappe 实例作为客户端注册到哪些授权服务器,以便访问某些资源。例如用户的 Google Drive 账户。
- 社交登录密钥:与已连接应用类似,但用于登录 Frappe 实例。例如用户的 Google 账户,用于启用“使用 Google 登录”。
- 令牌缓存:Frappe 实例访问已连接应用时收到的令牌。
功能特性
框架在 oauthlib 之上额外实现的功能:
- 动态客户端注册:允许客户端自行注册,无需资源所有者手动配置。RFC7591
- 授权服务器元数据发现:允许客户端查看实例的授权服务器(即自身)元数据,例如授权端点。RFC8414
- 资源服务器元数据发现:允许客户端查看实例的资源服务器元数据,例如文档、授权服务器等。RFC9728
其他文档
各种 OAuth2 功能的文档:
- 如何设置 OAuth 2?
- OAuth 2
- 基于令牌的身份验证
- 将 Frappe 用作 OAuth 服务
- 社交登录密钥
- 已连接应用
警告
其中一些页面可能已过时,如有疑问,建议始终查看
代码。
OAuth 设置
一个单一 DocType,用于配置 OAuth2 相关功能。建议
直接打开该 DocType 页面,因为每个字段都有
足够详细的帮助文本。
该设置允许切换以下功能:
- 通过跳过授权字段,在存在有效令牌时进行授权检查。注意:在生产环境中请保持此项未勾选。
- 授权服务器元数据发现:通过切换显示授权服务器元数据字段。
- 动态客户端注册:通过切换启用动态客户端注册字段。
- 资源服务器元数据发现:通过切换显示受保护资源元数据。
其余字段(在资源部分中)仅在响应 /.well-known/oauth-protected-resource 上的请求时使用
关于公共客户端
公共客户端(例如 SPA)默认具有受限访问权限。此
限制通过 CORS 实现。若要为某些受信任的客户端绕过此限制,你可以将其
主机名添加到允许的公共客户端来源字段中。