JWT | 简介
- 全称:JSON Web Token;
- JWT 主要用于身份认证和信息加密;
- JWT 是一个简单而有效的安全认证方式;
JWT 身份认证
JWT 身份认证.pngJWT 进阶特性
- JWT 可以携带数据进行传输,方便后端使用;
- JWT 可以对传输数据进行签名,增强安全性;
JWT 颁发流程
- 用户登录;
- 登录成功,用 randomKey 和 userId 生成 Token 返回可客户端;
- 客户端把 Token 带在 Header 的 Authorization 字段中,通过 Zuul 访问其他微服务的时候,经过自定义的 JWTFilter 完成身份验证逻辑:
- 判断请求头的 Authorization 字段中是否带有 Token;
- 判断 Token 是否过期;
- 从 Token 中解析出 randomKey 和 userId;
- 判断是否需要验签,需要的话获得验签的算法;
- 判断解析出来的 userId 是否有效;
- 如果都没问题,放行请求;如果有问题,直接返回给客户端;
跨域资源共享 | CORS
- Cross-origin Resource Sharing
- 前端和后端是两个独立部署的服务,拥有各自的域名,不同域名之间的服务相互访问资源;
- 这是 HTTP 协议规定的安全策略,限定了谁可以访问资源,以什么样的形式访问;
- 比如一个前后端分离的服务:
- 前端: node + vue -> admin.meetingfilm.com
- 后端: springboot -> backend.meetingfilm.com
跨域
- 当一个请求的协议、域名和端口三者之一不同即为跨域;
- 跨域的时候,默认是不能相互访问的;只有当后端,就是被访问的域,发现有一个域要来分享我的资源,后端需要提前做申请,源地址才有可能取到目标地址的资源;
跨域策略配置在代码中的缺陷
- 如果出现跨域策略不足的情况,需要修改代码,重新部署;
- 一般建议将跨域的策略配置在 Nginx 中;
Eureka Server | 安全问题
Spring Security
- Spring Cloud 默认可以使用 Spring Security 解决身份认证;
- Eureka Server 可以使用 Spring Security 建立安全连接;
- Spring Cloud 新版增加了 CSRF 的防御,会导致一些错误;
网友评论