OAuth2.0 认证与授权
有一个项目采用 OAuth2.0 标准进行认证与授权,JWT(JSON Web Token)作为访问令牌(Access Token)进行用户身份验证和权限控制。
认证
认证流程如下:
- 用户通过登录界面提交用户名和密码。
- 服务器验证用户凭据,若验证通过,生成 JWT 访问令牌。
- 服务器将 JWT 返回给客户端,客户端存储该令牌(通常存在浏览器的本地存储或内存中)。
- 客户端在后续的 API 请求中,将 JWT 作为 Bearer Token 放在 HTTP 请求头的 Authorization 字段中发送给服务器。
授权
授权流程如下:
- 服务器在接收到客户端请求时,从 Authorization 头中提取 JWT。
- 服务器验证 JWT 的有效性(签名、过期时间等)。
- 若 JWT 有效,服务器根据令牌中的用户信息和权限,决定是否允许访问请求的资源。
- 若 JWT 无效或权限不足,服务器返回相应的错误响应(如 401 未授权或 403 禁止访问)。
- 用户可以通过刷新令牌(Refresh Token)机制获取新的访问令牌,延长会话时间。
- 用户登出时,客户端删除存储的 JWT,服务器可选择将该令牌加入黑名单以防止其继续使用。
- 定期轮换密钥以增强安全性,确保旧令牌失效。
JWT 结构
JWT 由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。示例如下:
1 | { |
1 | { |
1 | HMACSHA256( |