什么是基于令牌的身份验证?
- IAM 词汇表
- 什么是基于令牌的身份验证?
基于令牌的身份验证是一种安全协议,通过使用加密令牌来验证用户的身份。通过基于令牌的身份验证,用户使用有效的令牌进行身份验证,以访问服务器、应用程序、网站或应用程序编程接口 (API)。基于令牌的身份验证是一种常见的双因素身份验证 (2FA) 或多因素身份验证 (MFA) 协议,在传统的用户名和密码之外再添一层安全性。
什么是令牌?
令牌是在登录过程中对用户进行身份验证的密钥。令牌可以是数字形式,也可以是物理设备,如智能卡或 USB 密钥。网络令牌是存储在用户设备上的数字令牌,因其便利性和灵活性,备受组织青睐。网络令牌消除了个人携带物理令牌的需求,可以轻松集成到各种软件系统中,提供无缝的身份验证体验。
基于令牌的身份验证的运作原理
我们看一下基于令牌的身份验证的四个基本步骤。
初次请求: 用户将通过输入用户名和密码来请求访问特定应用程序。
用户验证: 登录凭证将发送给身份验证系统,查看用户的凭证是否正确。确认后,它将检查用户在系统上的特定权限。
令牌验证: 系统将生成一个网络令牌,并向用户发放,可在有限时间内使用。
令牌存储: 令牌将存储在用户的设备上,直到用户注销、关闭会话或令牌过期。
用于进行身份验证的令牌类型
数字令牌类型多样,每一类都在确保安全、适当的身份验证流程中发挥着关键作用。我们来探讨一下五种常见的数字令牌及其在身份验证中的特定作用。
JSON 网络令牌 (JWT)
JSON 网络令牌是一个开放标准 (RFC 7519),用于在服务器和客户端两个实体之间安全地交换信息。JWT 包含用户身份信息,并具有数字签名,确认所含数据是合法的。JSON 网络令牌由三个部分组成:头、有效载荷和数字签名。
头: 头含有关于 JWT 的信息。它提供令牌类型以及用于签署令牌的算法。
有效载荷: 有效载荷含有用户的声明。声明是指关于特定实体(通常是用户)的识别信息。有效载荷可能包括其他信息,如令牌的有效期和用户的权限。
数字签名: 数字签名是一种加密密钥,用于验证头和有效载荷,以确保消息在传输过程中没有更改,并验证用户的身份信息。
访问令牌
访问令牌是最常见的 JSON 网络令牌类型。这些令牌旨在授予用户访问特定服务的权限。在用户成功登录后,将向用户发放具有有效期的访问令牌。访问令牌将赋予用户在有限时间内访问指定资源和服务的权限。
ID 令牌
ID 令牌与访问令牌不同,主要用途不是授予用户对网络资源和应用程序的访问权限。相反,ID 令牌是包含用户信息(如唯一的标识符、姓名和电子邮件地址及其身份验证状态)的 JSON 网络令牌。向客户端应用程序提供 ID 令牌来验证用户的身份。
刷新令牌
刷新令牌是特定类型的 JSON 网络令牌,用于获取额外的访问令牌,而无需用户重新输入其登录凭证。此类令牌旨在通过自动更新来延长用户的访问令牌的时限。
API 令牌
API 令牌是一串代码,与请求对 API 进行身份验证的用户相匹配。它可以验证用户的身份,并授予对 API 端点的访问权限,从而允许授权用户安全地与 API 资源进行交互。
使用基于令牌的身份验证的优势
以下是使用基于令牌的身份验证的三个优势。
安全: 由于令牌的设计时效较短,因此可以最大限度减少潜在未经授权访问的期限。用户完成与应用程序的会话后,已发放的令牌将过期。这限制了攻击者拦截令牌并入侵帐户的时间长度。
灵活: 基于令牌的身份验证可跨多个平台使用,如网络应用程序、移动应用和 API。这不仅为用户创造了简便的身份验证体验,还增加了用户的访问权限。
可扩展: 由于令牌必须存储在用户的设备上,因此服务器无需在应用程序上维持用户会话。这样一来,服务器就可以有效地管理多个请求,同时根据需要生成令牌。
使用基于令牌的身份验证的缺点
以下是使用基于令牌的身份验证的三个缺点。
密钥被盗的风险: 与基于令牌的身份验证相关的一个常见威胁是令牌密钥的泄露风险。网络钓鱼、恶意软件、暴力攻击或中间人 (MITM) 攻击等网络攻击可针对这些密钥。大多数网络令牌系统都依赖单一密钥,因此如果网络犯罪分子破解了密钥,则整个系统会变得非常脆弱。
时效短: 由于令牌时效较短,因此必须注意的是,令牌需要一致的管理。这包括确保令牌具有到期日,并根据需要更新凭证。
令牌大小: 令牌可能很大,如果其中包含海量用户信息或元数据,则尤其如此。由于于令牌的复杂性和大笑,在互联网带宽有限的环境中,它可能会增加网络开销。