版权声明:转载请附明原文链接 https://blog.csdn.net/songyuequan/article/details/83714231
本节重点
- OAuth2
- https 传输
登录和授权
- Cookie
- Authorization
- 把具有一定权限的令牌赋予你。
- 现实中的例子:尚方宝剑。皇上是授权方,包拯是被授权方。
- 登录也是一种授权:把本来属于客户端的权限赋予客户端。
Cookie
- Cookie的起源:购物车
- 早期网站的开发者就是浏览器的开发者。做了一个本地存储购物车的功能,叫做Cookie
- Cookie的工作机制
- 是由服务端来管理的
- Cookie的作用
- 会话管理:登录状态,购物车等
- 个性化:用户偏好,行为
- Tracking:分析用户行为
- XSS (Cross-site scripting):HttpOnly(本地脚本看不到)
- XSRF((Cross-site request forgery):Referer
Authorization
Basic
- 格式:
- Authorization: Basic username:password(Base64ed)
Bearer
- 格式:Authorization: Bearer
- bearer token 的获取方式:通过 OAuth2的授权流程
- OAuth2流程
- 第三方网站向授权方网站申请第三方授权合作,拿到 client id 和 client secret
- 用户在使用第三方网站时,点击「通过 XX (如 GitHub) 授权」按钮,第三方网 站将跳转到授权方网站,并传入client id 作为自己的身份标识
- 用户点击「同意授权」按钮后,授权 方网站将跳转回第三方网站,并传入Authorization code作为用户认可的凭证。
- 第三方网站将 Authorization code 发送回 自己的服务器
- 服务器将 Authorization code和自己的 client secret并发送给授权方的服务器,授权方服务器在验证通过后,返回 access token。OAuth 流程结束。
- 为什么OAuth2 要引入Authorization code,并需要申请授权的第三方将 Authorization code 发送回自己的服务 ,再从服务器来获取 access token,而不是直接返回 access token ?这样复杂的流程意义何在? 为了安全。OAuth2 强制授权流程必须使用HTTPS,因此需要保证当通信 路径中存在窃听者时,依然具有足够的安全性。
- 在自家App中使用Bearer token
- 有的 App会在Api的设计中,将登录和授权设计成类似 OAuth2 的过程,但简化掉 Authorization code 概念。即:登录接口请求成功时,会返回 access token,然后客户端在之后的请求中,就可以使用这个access token 来当做 bearer token 进行用户操作了 。
- Refresh token
- ⽤法:access token 有失效时间,在它失效后,调⽤ refresh token 接⼝,传⼊ refresh_token
来获取新的 access token。 - ⽬的:安全。
当 access token 失窃,由于它有失效时间,因此坏⼈只有较短的时间来「做坏
事」;同时,由于(在标准的 OAuth2 流程中)refresh token 永远只存在与第三⽅服务的服务
器中,因此 refresh token ⼏乎没有失窃的⻛险。 - ⽤法:access token 有失效时间,在它失效后,调⽤ refresh token 接⼝,传⼊ refresh_token
TCP/IP 协议族
概念
一系xie协议所组成的一个网络分层模型
为什么要分层
因为网络的不稳定性
具体分层
- Application Layer 应 层:HTTP、FTP、DNS
- Transport Layer 传输层:TCP、UDP
- Internet Layer 络层:IP
- Link Layer 数据链 层:以太 、Wi-Fi
长连接
为什么要长连接
因为移动网络并不在 Internet 中, 是在运营商的内网,并不具有真正的公 IP,因此当某个TCP连接在一段时间不通信之后, 网关会出于网络性能考虑而关闭这条TCP连接和公 的连接通道,导致这个TCP端口不再能收到外部通信消息,即TCP连接被动关闭。
连接的实现方式
心跳。即在一定间隔时间内,使TCP连接发送超短 意义消息来让网关不能将自己定义为「空闲连 接」,从而防止关将自己的连接关闭。
HTTPS
- HTTP over SSL
- SSL: Secure Socket Layer ——> TLS Transport Layer Secure
- 定义:在HTTP之下增加的一个安全层,用于保障HTTP的加密传输。
- 工作原理:在客户端和服务端之间(使用非对称加密)协商出一套对称密钥,每次发送信息之前将内容加密,收到之后解密,达到内容的加密传输
为什么不直接使用非对称加密
- 对称加密由于使用了复杂数学原理,因此计算相当复杂,如果完全使用非对称加密来加密通信内容,会严重影响网络通信的性能
HTTPS 链接
- 加密套件
- TLS 版本
- 非对称加密
- 对称加密
- hash算法
- 过程
- Client Hello (加密套件)
- Server Hello (加密套件)
- 服务器证书
- (核心是非对称加密的公钥)
- 服务器地址
- 证书签名
- 证书机构信息
- 证书机构公钥
- 证书机构其他信息
- 证书机构签发方
- Pre-master Secret(唯一一次非对称加密)
- Master Secret
- 客户端加密密钥
- 服务端加密密钥
- 客户端 MAC Secret
- 服务端 MAC Secret
HMAC
Hash-based Message Authenticate Code