认证

认证架构

Supabase 认证背后的架构设计。


Supabase 认证包含四个主要层级:

  1. 客户端层。可以是 Supabase 客户端 SDK 之一,也可以使用您选择的 HTTP 客户端手动发起 HTTP 请求。
  2. Kong API 网关。这是所有 Supabase 产品共享的组件。
  3. 认证服务(原名为 GoTrue)。
  4. Postgres 数据库。这是所有 Supabase 产品共享的组件。

客户端层

客户端层运行在您的应用中,可能存在于多种环境中,包括:

  • 前端浏览器代码
  • 后端服务器代码
  • 原生应用程序

客户端层提供了用于用户登录和管理的功能函数。我们推荐使用 Supabase 客户端 SDK,它们可以处理:

  • 对 Supabase 认证后端 HTTP 调用的配置和认证
  • 在应用存储介质中持久化、刷新和移除认证令牌
  • 与其他 Supabase 产品的集成

但其核心功能是管理 HTTP 调用,因此您也可以根据需要自行编写客户端层。

更多信息请参阅客户端 SDK 文档:

认证服务

认证服务是由Supabase编写和维护的Auth API服务器。它是GoTrue项目的一个分支,最初由Netlify创建。

当您部署新的Supabase项目时,我们会将此服务器实例与您的数据库一同部署,并将所需的认证模式注入到您的数据库中。

认证服务负责:

  • 验证、签发和刷新JWT令牌
  • 作为应用程序与数据库中认证信息的中介
  • 与外部提供商通信实现社交登录和单点登录(SSO)

Postgres

Supabase认证使用Postgres数据库中的auth模式来存储用户表和其他信息。出于安全考虑,此模式不会在自动生成的API中公开。

您可以通过数据库触发器外键将认证信息与您自己的对象关联。确保您为认证数据创建的任何视图都通过启用RLS撤销授权得到充分保护。