参考:
https://blog.youkuaiyun.com/wang839305939/article/details/78713124
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Authentication
1.HTTP Basic
HTTP 提供一个用于权限控制和认证的通用框架。最常用的HTTP认证方案是HTTP Basic authentication。
当客户端向服务器发送一个请求时,若一开始还未验证,则服务器回返回401未授权,并且返回WWW-Authenticate来告诉客户端如何验证,之后客户端向服务端发送相应证明自己的比如说密码,添加在Authorization字段里,浏览器会自动进行加密,然后服务端会进行解密验证,返回成功,或者未授权。
HTTP Basic一般不是特别安全,不会放比较敏感的内容。
2.session-cookie
一般用于利用服务器session和浏览器端的cookie实现前后端验证。HTTP请求是无状态,不知道之前的请求来过了没。记录状态可以通过session来进行验证。同一个客户都是一个session。
客户端首次访问服务端,发送请求时,会创建一个session,然后保存session,并且生成唯一字符串放在响应头里,cookie里,就保存下来。当再次访问时都会带上cookie里的唯一字符串,在服务端对唯一字符串进行认证。
3.Token
类似session+id
客户端发给服务端帐号密码,服务端签发TOKEN,并发回客户端,客户端把token存在内存或者本地,每次请求需要携带token,服务器接受请求时会验证token。
登录以后就只看token了,服务端会拦截所有请求并且验证token的合法性,不合法返回401.
session+id需要有cookie,只有浏览器可以,就是解析cookie。并且session是一直不变的,而token是可以动态改变的。
token一般可以用JWT (JSON WEB TOKEN)
三部分,(1)头部:包含类别,加密算法(2)内容:用户信息(3)签名根据加密返回的签名子串
4.OAuth
OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息。
过程如图
第一步 用户请求授权第三方
第二步 第三方授权返回用户凭证
第三步 用户凭证请求
第四步 返回对应token
第五步 请求携带token
第六步 返回资源