鉴权:指用户是否有访问系统的权利。
传统鉴权:通过密码来验证,他对用户时,为用户分配一个密码,或者用户自己申请,每个获得密码的用户,都已经被授权。
缺点:只要获取到用户密码,就会拥有权限身份。只能通过管理员修改用户密码,在这之前,还需要人工校验用户的合法身份。
主流鉴权:通过认证授权来验证数字签名是否正确,授权发生在鉴权之后。
二、鉴权类型
HTTP Basic Authentication(HTTP基本认证)
HTTP自带的权限控制和认证机制
访问者需要输入密码才能访问页面,否则返回401错误;
通过认证的方式
GET:URL上带入用户名和密码
POST:在Header中添加Authorization,值为Base64加密后的串
一种不安全的认证机制
session + cookie验证
Token验证
OAuth(开放授权)
三、Cookie
客户端发送请求至服务器
服务器返回给客户端一个cookie
客户端保存该cookie,再次发请求至服务器,携带该cookie
服务器检查客户端传来的cookie是否与当初发送给客户端的一致
一致,则返回响应体;不一致,则返回失败
四、Session
客户端发起请求至服务器,服务器生成一个Session 和Session ID
服务器将响应内容和该sessionID(即Cookie)发送至客户端
客户端再次发起请求,携带该sessionID(即Cookie)与请求内容一并发送至服务器
服务器提取客户端发送的sessionID(即Cookie),与保存的Session ID对比
五、Token
服务器生成的一串字符串,是用户身份的验证方式
由uid、time、sign组成
uid:用户唯一的身份标识
time:当前时间的时间戳
sign:签名,由token前几位 + 复杂算法的十六进制字符串组成
验证原理
客户端登录(用户名+密码)
服务器验证用户名和密码,成功后,签发一个Token,并回传给客户端
客户端收到Token后,进行存储,放在cookie、header或者Local Storage里
客户端每次发送请求,都携带该Token
服务器验证Token,通过,则返回响应内容;不通过,返回失败信息
六、OAuth(Open Authorization)
是一种开放授权协议,允许第三方应用程序使用资源所有者的凭据获得对资源的访问权限
四个角色
资源拥有者
资源服务器
客户端
授权服务器
四种授权模式
授权码模式:功能最完整、流程最严密
简化模式
密码模式
客户端模式
原理
客户端(Client)向资源所有者(Resource Owner)请求授权
客户端收到用户授权(资源所有者授权的凭证(Authorization))
客户端通过与授权服务器(Authorization Server)进行身份验证,并提供授权凭证来获取访问令牌(Access Token)
授权服务器对客户端进行身份验证并验证授权许可,有效,则发送访问令牌(Access Token)
客户端通过资源服务器访问受保护的资源,并通过访问令牌进行身份验证
资源服务器验证访问令牌,有效,则为请求提供服务
七、登录方式
多点登录
不同网站都有每个网站自己的用户和密码(不同数据库,不同登录模块),各站点的登录状态相互不认可,各站点需要手工逐一登录
流程
认证、授权
单点登录(Single Sign On)SSO
各站点共用一台认证服务器。用户登录任何一个站点,其他站点可免登录,且各站点可通过登录站点的登录状态进行直接交互。
简单来说,用户一次登录,即可访问所有相关联的系统,但仅限于登录访问,不负责授权。
上一篇:接口文档参考示例