本文内容一览:
- 经典的凭证交换:表单登录获取Token
- 第三方授权:OAuth 2.0 / OIDC 流程
- 简易但风险较高:API密钥(API Key)
- 无缝体验:单点登录(SSO)与隐式流程
- 移动端联动:扫码登录获取Token
- Token获取后的关键操作
- 安全注意事项
在Web开发与前后端分离的架构中,Token(令牌)是身份验证和授权机制的核心,它如同一把动态的、有时效性的“数字钥匙”,允许用户在不需要重复输入凭证的情况下,安全地访问受保护的资源,本文将系统性地介绍网页中获取Token的几种主流方法及其实现原理。
经典的凭证交换:表单登录获取Token
这是最常见的方式,通常用于用户直接登录的场景。

- 流程:用户在前端页面输入用户名和密码,前端通过HTTPS POST请求将凭证安全地发送到后端认证服务器(如
/api/login或/auth/token端点)。 - 服务器验证:服务器核对凭证无误后,生成一个Token(常见的是JWT格式),并将其返回给前端。
- 前端处理:前端在收到Token后,通常会将其存储在客户端的某个位置,如
localStorage、sessionStorage或安全的HttpOnly Cookie中,供后续请求使用。
代码示例(简要):
fetch('/api/auth/login', {
method: 'POST',
body: JSON.stringify({ username: 'user', password: 'pass' })
})
.then(response => response.json())
.then(data => {
const token = data.access_token;
localStorage.setItem('auth_token', token); // 存储Token
});
第三方授权:OAuth 2.0 / OIDC 流程
当用户需要通过Google、GitHub、微信等第三方平台登录时,通常采用OAuth 2.0或OpenID Connect协议。
- 核心思想:用户被重定向到第三方授权页面,同意授权后,第三方将授权码(Authorization Code)通过重定向URI传回你的前端应用。
- Token获取:前端应用(或更安全地,通过后端服务器)用这个授权码向第三方服务器交换最终的Access Token(和可选的ID Token)。
- 优势:用户无需向你的应用直接提供第三方密码,过程更安全,权限可控。
简易但风险较高:API密钥(API Key)
对于一些面向开发者或机器对机器的场景,可能会使用静态的API Key作为Token。
- 获取:用户在第三方平台的控制台中手动生成并复制API Key。
- 使用:前端通常在请求头(如
Authorization: Bearer <api_key>)或查询参数中携带此Key。 - 警告:由于静态Key一旦泄露将导致严重风险,强烈不建议在前端公网环境中使用高权限的静态API Key,它更适用于后端服务器间的通信或仅限读取的低权限场景。
无缝体验:单点登录(SSO)与隐式流程
在企业或大型生态系统中,用户登录一个应用后,访问同生态的其他应用无需再次登录。
- 原理:中央认证服务器颁发Token,用户访问新应用时,该应用检查是否存在有效的中央会话Token(通常通过共享Cookie或前端channel)。
- 获取:若Token存在且有效,应用会静默地获取或刷新Token,用户感知不到登录过程。
移动端联动:扫码登录获取Token
常见于网页需要与已登录的移动App(如微信、淘宝)共享登录态时。
- 流程:网页展示二维码(包含临时会话ID),用户用已登录的App扫描二维码并确认,App通知认证服务器,服务器随即为对应的网页会话颁发有效的Token。
- 前端角色:网页前端通过轮询(Polling)或WebSocket等待后端通知,一旦收到成功通知,即获取Token并完成登录。
Token获取后的关键操作
无论通过何种方式获取,Token到手后,标准做法是将其附加到后续请求的 HTTP Authorization头 中:
fetch('/api/protected-data', {
headers: {
'Authorization': `Bearer ${token}`
}
});
安全注意事项
- 传输安全:所有Token获取流程必须使用HTTPS,防止中间人攻击。
- 存储安全:避免将敏感Token(尤其是长期有效的)直接放在可被JavaScript全局访问的
localStorage中,以防XSS攻击,对于高安全要求场景,可优先考虑使用HttpOnly Cookie(配合CSRF防护)。 - 权限最小化:只请求应用所需的最小权限范围的Token。
- 生命周期管理:实现Token的自动刷新(使用Refresh Token)和安全的过期处理逻辑。
网页Token的获取是构建现代安全Web应用的基石,从传统的表单登录到现代化的OAuth授权,选择哪种方法取决于你的应用场景(第一方/第三方登录)、安全要求和技术架构,理解这些方法的原理与差异,能帮助开发者设计出既用户体验流畅,又安全可靠的身份验证系统,随着Web技术的演进,基于Passkeys(通行密钥)等无密码技术的Token获取方式也正在兴起,值得持续关注。







