词汇表
Supabase 文档中使用的术语和缩写词的定义。
访问令牌#
访问令牌是一种短期的令牌(通常不超过 1 小时),它授权客户端访问服务器上的资源。它采用 JSON Web Token (JWT) 的形式。
认证#
身份验证(通常缩写为 authn.)是验证用户身份的过程。用户身份的验证可以通过多种方式进行
- 要求用户提供他们所知道的信息。例如:密码、口令。
- 检查用户是否拥有他们拥有的东西。例如:电子邮件地址、电话号码、硬件密钥、恢复代码。
- 确认用户具有某些生物特征。例如:指纹、面部结构、虹膜印记。
身份验证器应用#
身份验证器应用生成基于时间的 One-Time Password (TOTP)。这些密码基于一个漫长且难以猜测的密钥字符串生成。该密钥最初通过扫描二维码传递给应用程序。
授权#
授权(通常缩写为 authz.)是验证某个身份是否允许访问资源的过程。授权通常通过验证访问令牌进行。
身份提供者#
身份提供者是一种允许第三方应用程序识别用户而无需交换密码的软件或服务。没有身份提供者,社交登录和企业单点登录将是不可能的。
社交登录平台通常使用 OAuth 协议,而企业单点登录则基于 OIDC 或 SAML 协议。
JSON Web Token (JWT)#
一个 JSON Web Token 是一种数据结构,表示为字符串,通常包含关于用户的身份和授权信息。它编码了其生命周期信息,并使用加密密钥进行签名,使其具有防篡改性。
访问令牌是 JWT,通过检查它们包含的信息,您可以允许或拒绝对资源的访问。基于 JWT 中存在的信息的行级安全策略。
JWT 签名密钥#
Supabase 发出的 JWT 使用 HMAC-SHA256 算法进行签名。用于签名的密钥称为 JWT 签名密钥。您不应与您不信任的人或事物共享此密钥,也不应公开发布它。任何访问密钥的人都可以创建任意 JWT。
多因素身份验证 (MFA 或 2FA)#
多因素身份验证是通过结合多种因素来验证用户身份的过程:用户知道的东西、用户拥有的东西或用户本身。
Nonce#
Nonce 意为只使用一次的数字。实际上,它是一个唯一且难以猜测的字符串,用于安全地初始化协议或算法,或检测各种形式的重放攻击。
OAuth#
OAuth 是一种允许第三方应用程序请求和接收用户授权的协议。它通常用于实现社交登录,并作为 OIDC 协议中企业单点登录的基础。应用程序可以请求不同级别的访问权限,包括基本的用户身份信息,例如姓名、电子邮件地址和用户 ID。
OIDC#
OIDC 代表 OpenID Connect,是一种实现企业单点登录的协议。OIDC 基于现代 Web 技术,例如 OAuth 和 JSON Web Tokens。它通常用于代替较旧的 SAML 协议。
一次性密码 (OTP)#
一次性密码是一种短小、随机生成且难以猜测的密码或代码,它被发送到设备(如电话号码)或由设备或应用程序生成。
密码哈希函数#
密码哈希函数是专门设计的算法,允许 Web 服务器在不以明文形式存储密码的情况下验证密码。与从安全随机数生成器生成的其他难以猜测的字符串不同,密码由用户选择,并且通常容易被攻击者猜测。这些算法会减慢并使攻击者猜测密码变得非常昂贵。
有三种常用的密码哈希函数:Argon2、bcrypt 和 scrypt。
密码强度#
密码强度衡量的是密码的猜测难度。简单的测量包括计算密码中使用的字符类型的可能性数量。例如,仅由字母组成的密码比包含字母和数字的密码变化更少。更好的测量包括诸如查找与单词、短语或已知密码的相似性之类的策略。
PKCE#
代码交换的证明密钥是 OAuth 协议的扩展,它能够安全地在应用程序(Web 应用程序、单页应用程序或移动应用程序)和授权服务器之间交换刷新和访问令牌。它用于刷新和访问令牌的交换可能被第三方拦截的地方,例如操作系统中运行的其他应用程序。这在移动设备上是一个常见问题,操作系统可能会将 URL 分发给其他应用程序。这有时也可以在单页应用程序中被利用。
提供者刷新令牌#
提供者刷新令牌是由第三方身份提供者发出的刷新令牌,可用于刷新返回的提供者令牌。
提供者令牌#
提供者令牌是由第三方身份提供者发出的长期令牌。这些由社交登录服务(例如 Google、Twitter、Apple、Microsoft)发出,并且唯一标识这些平台上的用户。
刷新令牌#
刷新令牌是一种长期(在大多数情况下具有无限生命周期)的令牌,旨在存储并仅在一次性交换为新的刷新和访问令牌。一旦刷新令牌被交换,它就会失效,并且无法再次交换。实际上,刷新令牌可以在短时间内多次交换。
刷新令牌流程#
刷新令牌流程是一种基于有效的刷新令牌颁发新的刷新和访问令牌的机制。它用于扩展应用程序的授权访问权限。正在不断使用的应用程序将在访问令牌到期之前调用刷新令牌流程。
重放攻击#
重放攻击是指攻击者窃取或拦截敏感信息,然后尝试再次使用它(从而重放)以破坏系统。通常可以使用适当的 nonce 来缓解重放攻击。
行级安全策略 (RLS)#
行级安全策略是 Postgres 数据库内的特殊对象,用于限制客户端可用的操作或返回的数据。RLS 策略使用 JWT 中包含的信息来识别用户以及他们允许执行或查看的操作和数据。
SAML#
SAML 代表 Security Assertion Markup Language,是一种实现企业单点登录的协议。SAML 发明于 2000 年代初,基于 XML 技术。它是实现企业单点登录的事实标准,尽管更新的 OIDC (OpenID Connect) 协议正在变得越来越流行。
会话#
会话或身份验证会话是将经过验证的用户身份绑定到 Web 浏览器的概念。会话通常是长期的,并且可以通过用户注销来终止。访问和刷新令牌对代表浏览器中的会话,它们存储在本地存储或作为 cookie 中。
单点登录 (SSO)#
单点登录允许企业集中管理帐户和对应用程序的访问权限。他们使用身份提供者软件或服务在目录中组织员工信息,并通过 OIDC 或 SAML 协议将这些帐户与应用程序连接起来。
基于时间的 One-Time Password (TOTP)#
基于时间的 One-Time Password 是一种从密钥生成的短时间一次性密码,通常来自移动设备中的应用程序(例如 Google Authenticator、1Password)。