在本文中,您将学习基本的关键概念,这些概念将帮助您掌握身份验证和授权的工作原理。
您将首先了解什么是身份验证和授权,然后了解如何使用 Supabase auth 在应用程序中实现身份验证。
(本文内容参考:java567.com)
目录
- 先决条件
- 什么是认证和授权?
- 身份验证如何进行?
- 使用令牌、秘密和 Cookie 进行会话管理
- 认证因素的类型
- 常见的身份验证策略
- 基于密码的身份验证
- 无密码身份验证
- 双因素身份验证 (2FA)
- 多重身份验证 (MFA)
- OAuth 2.0 和社交身份验证
- 单点登录和 SAML
- 身份验证和安全
- Supabase 和 Supabase 身份验证服务
- 如何使用 Supabase 身份验证
- 应用程序编程接口
- 软件开发工具包
- 身份验证 UI 助手
- 概括
- 资源
先决条件
您需要满足以下条件才能充分利用本文:
- 基础编程知识。
- 后续的Supabase 项目。
- 以及一个文本编辑器来尝试示例代码片段。
什么是认证和授权?
简单来说,身份验证是用户向系统标识自己的过程,系统确认该用户就是他们所声称的身份。
另一方面,授权是系统确定允许用户查看或交互应用程序的哪些部分以及不允许用户访问应用程序的哪些部分的过程。
身份验证如何进行?
描述用户身份验证过程的流程图
用户第一次与系统交互时,系统会要求他们注册。通常,用户将提供一条信息和一个只有他们和系统知道的秘密。这是身份验证过程的注册部分。
下次用户与同一系统交互时,他们将需要提供识别信息以及先前定义的秘密,以验证其身份。
用户发起交互的设备是客户端,系统是服务器。一旦系统验证了用户,它就会向客户端发送有关该用户的一些信息。
由于此过程需要时间并且需要用户执行某些操作,因此客户端将存储此信息并在用户需要访问系统时将其发送回系统。这不需要用户每次都主动重新进行身份验证,从而减少了摩擦。这将创建一个用户会话。
使用令牌、秘密和 Cookie 进行会话管理
显示客户端-服务器架构中的会话管理的序列图
服务器可以通过两种方式将用户信息传递给客户端:通过令牌或会话 ID。
对于令牌,服务器生成签名令牌并将其传递给客户端。该令牌通常是 JWT,可能包含有关用户的信息。客户端将存储此令牌,并在每次用户发出请求时将其发送回服务器。
服务器能够验证令牌的完整性,因为它对其进行了签名。这称为无状态身份验证,因为令牌是自包含的,并且服务器不需要将会话数据存储在数据库或缓存中。
对于 cookie,服务器会在数据库或缓存中创建用户会话记录,其中包含会话 ID。服务器将此会话 ID 发送给客户端。
客户端将此会话 ID 存储在 cookie 中,并在用户发出请求时将其发送回服务器。会话 ID 是一个随机字符串,充当指向数据库中实际用户记录的指针。
当服务器收到此 cookie 时,会将其包含的会话 ID 与其会话记录进行匹配,然后将该记录与数据库中的用户数据进行匹配。这称为状态身份验证,因为需要数据库查找。
认证因素的类型
身份验证因素是指可用于验证用户身份的凭证类型。身份验证过程中通常使用 3 个因素,它们是:
- 您知道的事情:示例是密码。
- 您拥有的东西:例如发送到您手机的令牌。
- 你是谁:一个例子就是你的指纹。
常见的身份验证策略
身份验证策略是指用于验证用户的过程。不同类型的身份验证策略包括:
基于密码的身份验证
这是指用户通过提供用户定义的基于文本的秘密来识别自己的传统方式。通常,系统在其服务器上处理整个过程,并负责安全性和可靠性。
无密码身份验证
在这种方法中,系统验证用户的身份而不需要用户定义的密码。相反,系统将生成一次性密码 (OTP) 并发送给用户。然后使用该 OTP 代替密码来访问系统。示例包括魔术链接,系统将代码发送到用户的电子邮件。
双因素身份验证 (2FA)
在主要身份验证完成后,系统会通过要求额外的信息来尝试验证用户的身份。
这可以是通过电子邮件或短信发送给用户的 OTP,也可以是在系统授予访问权限之前要求用户提供生物识别信息。
多重身份验证 (MFA)
这与 2FA 类似,只不过系统将使用不止一种额外方法来验证用户的身份。MFA 和 2FA 中使用的额外方法或因素通常是系统外部的,例如需要电话的 SMS。
OAuth 2.0 和社交身份验证
OAuth 是一个授权框架,允许客户端代表用户从外部服务器访问信息。外部服务器提示用户是否允许与客户端共享所请求的资源。
用户允许该操作后,外部服务器向客户端发出访问令牌。
然后,客户端将此访问令牌提供给原始服务器,原始服务器验证令牌的有效性并管理对所请求资源的访问。OAuth 2.0 是 OAuth 的最新版本,也是使用更广泛的框架。
OAuth 2.0 扩展了对基于非浏览器的系统的支持。社交身份验证基于 OAuth 2.0,但在这种情况下,客户端将用户重定向到的外部服务器通常是社交媒体平台。这是每当您在身份验证页面上看到“继续使用 Twitter/X”按钮时执行的身份验证过程类型。
单点登录和 SAML
SAML 代表安全断言标记语言。它是在系统之间传递身份验证和授权信息的标准。一个系统充当请求系统或服务提供商 (SP),另一个系统保存所请求的信息或充当身份提供商 (IdP)。
收到此请求后,身份提供者将生成一些 SAML 形式的语句,其中包含一些用户信息。然后,服务提供商使用该信息来决定如何处理与其受保护资源相关的用户。
SSO 指单点登录。这是一种身份验证策略,允许用户通过一个系统/应用程序登录,然后让他