在现代 Web 开发和 API 安全体系中,Token(令牌) 是一种广泛使用的身份验证与授权机制。无论是登录系统、调用第三方 API,还是实现单点登录(SSO),Token 都扮演着至关重要的角色。本文将从概念、原理、类型、使用场景到安全实践,全面介绍 Token 是什么、它如何工作,以及开发者应如何正确使用它。
一、什么是 Token?
Token(令牌) 是一种由服务端生成、用于标识用户身份或授权状态的字符串凭证。客户端在首次认证成功后获得 Token,并在后续请求中携带该 Token,服务端通过验证 Token 的有效性来判断用户是否有权访问特定资源。
🔑 简单理解:Token 就像一张“电子通行证”,你凭它进入受保护的区域,而无需每次都出示身份证(用户名/密码)。
二、为什么需要 Token?
传统的基于 Session 的认证方式存在以下问题:
有状态(Stateful):服务端需存储用户会话信息,难以扩展到分布式系统。
跨域困难:Cookie 在跨域场景下受限,不适合前后端分离或移动端。
CSRF 风险:依赖 Cookie 的机制容易受到跨站请求伪造攻击。
而 Token 机制具有以下优势:
✅ 无状态(Stateless):服务端无需存储会话,适合微服务和水平扩展。
✅ 跨平台支持:可通过 HTTP Header 传输,适用于 Web、App、小程序等。
✅ 安全性更高:配合 HTTPS 和签名机制,可有效防止篡改和重放攻击。
✅ 灵活授权:可携带权限信息,实现细粒度访问控制。
三、Token 的工作流程
典型的基于 Token 的认证流程如下:
用户登录:客户端发送用户名和密码到服务端。
服务端验证:验证凭据是否正确。
生成 Token:验证成功后,服务端生成一个 Token(如 JWT)并返回给客户端。
客户端存储:客户端将 Token 保存在 localStorage、sessionStorage 或内存中。
携带 Token 请求:后续每次请求都在 HTTP Header 中携带 Token
四、常见的 Token 类型
- JWT(JSON Web Token)
- Opaque Token(不透明令牌)
- OAuth 2.0 Token
五、总结
Token 不仅仅是一串字符串,它是现代身份认证体系的核心载体。理解 Token 的原理、类型和安全边界,是每一位开发者构建安全、可靠、可扩展应用的必备技能。