OAuth2

Frappe 框架使用 oauthlib 来管理 OAuth2 相关需求。一个 Frappe 实例可以同时充当以下所有角色:

  1. 资源服务器:存放资源,例如你 DocType 中的数据。
  2. 授权服务器:颁发令牌以访问某些资源的服务器。
  3. 客户端:需要访问资源服务器上某些资源的应用。

与上述角色相关的 DocType:

  1. 通用
    • OAuth 设置:用于配置与这三种角色相关的某些 OAuth 功能。
  2. 授权服务器
    • OAuth 客户端:记录在 Frappe 实例中注册的客户端。
    • OAuth 持有者令牌:在此维护发放给已注册客户端的令牌。
    • OAuth 授权码:跟踪客户端用于换取令牌的 OAuth 授权码。
    • OAuth 提供方设置:允许跳过授权。[DEPRECATED] 请改用 OAuth 设置。
  3. 客户端
    • 已连接应用:记录此 Frappe 实例作为客户端注册到哪些授权服务器,以便访问某些资源。例如用户的 Google Drive 账户。
    • 社交登录密钥:与已连接应用类似,但用于登录 Frappe 实例。例如用户的 Google 账户,用于启用“使用 Google 登录”。
    • 令牌缓存:Frappe 实例访问已连接应用时收到的令牌。

功能特性

框架在 oauthlib 之上额外实现的功能:

  • 动态客户端注册:允许客户端自行注册,无需资源所有者手动配置。RFC7591
  • 授权服务器元数据发现:允许客户端查看实例的授权服务器(即自身)元数据,例如授权端点。RFC8414
  • 资源服务器元数据发现:允许客户端查看实例的资源服务器元数据,例如文档、授权服务器等。RFC9728

其他文档

各种 OAuth2 功能的文档:

  1. 如何设置 OAuth 2?
  2. OAuth 2
  3. 基于令牌的身份验证
  4. 将 Frappe 用作 OAuth 服务
  5. 社交登录密钥
  6. 已连接应用

警告

其中一些页面可能已过时,如有疑问,建议始终查看
代码。

OAuth 设置

一个单一 DocType,用于配置 OAuth2 相关功能。建议
直接打开该 DocType 页面,因为每个字段都有
足够详细的帮助文本。

该设置允许切换以下功能:

  • 通过跳过授权字段,在存在有效令牌时进行授权检查。注意:在生产环境中请保持此项未勾选。
  • 授权服务器元数据发现:通过切换显示授权服务器元数据字段。
  • 动态客户端注册:通过切换启用动态客户端注册字段。
  • 资源服务器元数据发现:通过切换显示受保护资源元数据。

其余字段(在资源部分中)仅在响应 /.well-known/oauth-protected-resource 上的请求时使用

关于公共客户端

公共客户端(例如 SPA)默认具有受限访问权限。此
限制通过 CORS 实现。

若要为某些受信任的客户端绕过此限制,你可以将其
主机名添加到允许的公共客户端来源字段中。