何时使用 Web 服务器、安装的应用程序和服务帐户身份验证流程?

When to use Web server, installed application and service account authentication flows?

我想使用 python 构建 Sheetsu 应用程序的克隆。为此,我需要对用户进行身份验证和授权。我在 OAuth 2.0 身份验证流程中遇到了三种类型。他们是 1.网络服务器 2.安装的应用程序 3. 服务账号

谁能解释一下这三者的区别?

OAuth2.0 场景:

  1. 网络服务器

用户与之交互的应用程序托管在网络服务器上。用户想要将对其数据的访问权限委托给此应用程序

建议的 OAuth2.0 流程:-

授权码授予。


  1. 已安装的应用程序

用户与之交互的应用程序托管在设备上,例如phone 应用程序或桌面应用程序。同样,用户希望将对其数据的访问权限委托给此本机应用程序

建议的 OAuth2.0 流程:-

使用 PKCE 授予授权码。


  1. 服务帐号

应用程序托管在网络服务器上。应用程序需要令牌才能从 API 访问数据,但不需要在最终用户的特定上下文中访问

建议的 OAuth2.0 流程:-

客户端凭据授予。

或者,传递服务帐户用户名和密码的资源所有者密码凭据 - 一些遗留 API 的工作方式与此类似,但应尽可能避免这种流程。

还有另一种类型的应用程序:

  1. 单页应用程序 (SPA)

用户与之交互的应用程序在他们的 Web 浏览器服务器上运行。用户想要将对其数据的访问权限委托给此应用程序

建议的 OAuth2.0 流程:-

授权码授予 public 客户端,如果可用,

隐式授予。