JWT 认证与授权
有一个项目采用了 Spring Security 和 JWT(JSON Web Token)进行用户认证和授权。
JWT 介绍
JWT 是一种基于 JSON 的开放标准(RFC 7519),用于在各方之间安全地传输信息。它由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。JWT 通常用于身份验证和信息交换。
JWT 结构
JWT 由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。示例如下:
1 | { |
1 | { |
1 | HMACSHA256( |
认证流程
- 用户通过用户名和密码登录,系统验证用户身份。
- 验证通过后,系统生成 JWT,并将其返回给用户。
- 用户在后续请求中将 JWT 放入 Authorization 头中,格式为
Bearer <token>
。 - 服务器端通过解析 JWT,验证其合法性和有效性,从而完成用户身份验证。
授权流程
- 服务器在接收到客户端请求时,从 Authorization 头中提取 JWT。
- 服务器验证 JWT 的有效性(签名、过期时间等)。
- 若 JWT 有效,服务器根据令牌中的用户信息和权限,决定是否允许访问请求的资源。
- 若 JWT 无效或权限不足,服务器返回相应的错误响应(如 401 未授权或 403 禁止访问)。
- 用户登出时,客户端删除存储的 JWT,服务器可选择将该令牌加入黑名单以防止其继续使用。