在身份认证中,Token 加密是确保用户身份验证信息安全的一种方法。常见的实现包括 JWT(JSON Web Token)和加密算法。下面是实现 Token 加密的基本步骤:
1. 生成 Token
选择加密算法:
- 常见的算法包括对称加密(如 HMAC SHA256)和非对称加密(如 RSA、ECMAScript)。
创建 Token:
- Payload:包含用户信息和其他声明。
- Header:指定加密算法。
- Signature:将 Header 和 Payload 使用密钥或公私钥对进行签名。
JWT 示例
const jwt = require('jsonwebtoken');
// 生成 Token
function generateToken(user) {
const payload = { userId: user.id, username: user.username };
const secretKey = 'your_secret_key'; // 对称加密密钥
const token = jwt.sign(payload, secretKey, { expiresIn: '1h' });
return token;
}
2. 验证 Token
解析 Token:
- Header:从 Token 中提取算法和加密方式。
- Payload:解析并获取用户信息。
- Signature:验证签名是否有效,确保 Token 未被篡改。
验证过程:
// 验证 Token
function verifyToken(token) {
const secretKey = 'your_secret_key';
try {
const decoded = jwt.verify(token, secretKey);
return decoded; // 验证通过,返回解码后的用户信息
} catch (err) {
throw new Error('Invalid token');
}
}
3. 常见的加密算法
- 对称加密:使用相同的密钥进行加密和解密,如 HMAC SHA256。
- 非对称加密:使用一对公钥和私钥进行加密和解密,如 RSA。
4. Token 的安全管理
- 存储:Token 通常存储在客户端的 Cookie 或 Local Storage 中。确保存储位置的安全性,以防 XSS 攻击。
- 过期时间:设置合理的过期时间,并使用刷新 Token 机制以维持用户会话。
- 传输:使用 HTTPS 确保 Token 在传输过程中加密。