- 核心概念(鉴权方式,加密/解密,HTTPS)
- JWT工作原理
- Node.js集成JWT
鉴权方式:
- JWT
优点:易扩展,支持移动设备,跨应用调用,安全,承载信息丰富
缺点:刷新与过期处理,Payload(有效载荷)不易过大,中间人攻击 - session/cookie
优点:较易扩展,简单
缺点: 安全性低,性能低,服务器存储,多服务器同步session困难(需要借助redis等服务),跨平台困难。 - oAuth 2.0 (第三方登陆,如微信,github扫描二维码登陆)
优点:开放,安全,简单,权限指定
缺点:需要增加授权服务器,增加网络请求
什么是JWT
JWT的全称是JSON Web Token,一个JWT由三部分构成:Header(头部),Payload(载荷),Signature(签名)。
- Header
主要规定token使用的加密方式以及token的类型。{ "alg":"HS256", "typ":"JWT" }
- Payload
主要是token中包含的一些用户信息,如:用户名,过期时间等{ "sub":"2021-01-01", "name":"zyy", "admin":true }
- Signature
是header的base64的值+payload的base64的值+secret生成的字符串
然后对这个进行规定的加密,最终获得签名
HMACSHA256( base64UrlEncode(header) + "."+ base64UrlEncode(payload), secret )
JWT特点
- 防CSRF(主要是伪造请求,带上Cookie)
- 适合移动应用(主要指的是app,因为cookie需要存放在浏览器上)
- 无状态,编码数据
jwt在线验证:https://jwt.io/
算法/加密
算法:
算法中的指令描述的是一个计算,当其运行时能从一个初始状态和初始输入(可能为空)开始,经过一系列有限而清晰定义的状态
最终产生输出并停止于一个终态。(类似于function)
加密:
数据加密的基本过程,就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”。通过这样的途径,来达到保护数据不被非法人窃取,阅读的目的。
HTTPS
安全传输协议HTTPS
HTTPS(HyperText Transfer Protocol Secure)超文本传输安全协议,常称为HTTP over TLS, HTTP over SSL 或HTTP Secure。是一种通过计算机网络进行安全通信的传输协议。
API安全设计
- 通信信道加密:使用HTTPS
- 通信数据加密:密文+加密关键数据
- 通信安全策略:授权中间层,尝试次数,过期策略。。。