web权限管理总结

(一)HTTP基本认证
       对象:客户端与服务器
       流程:
  1. 客户端请求头中Authorization域包含用户名与密码信息,供服务端认证
       缺点:
       1. 每次通信都传输用户名密码,不安全 
 
(二)传统session-cookie模式
        对象:浏览器与服务器,单一应用
        流程:
        1. 用户登陆时服务器将用户信息存储在session中
        2. 服务器将sessionID发给客户端
        3. 客户端将sessionID存储在cookie中
        4. 每次通信客户端都需要将cookie一并发送
        5. 服务器获取客户端发送的cookie来查询session,实现用户信息的获取
 
        缺点:
        session存储在服务器中,但在分布式系统中其他服务无法获取,只能通过复制session来共享,大量的复制操作会占用大量网络资源
 
(三) 分布式session模式
        对象:客户端与多个服务
        流程:
        1.用户登陆成功将信息存储在session中
        2.session存储在redis或mysql中
        3.客户端访问微服务时,服务器从存储中心提权用户信息
 
(四)基于token(JWT)
        对象:可用于手机应用与服务器,浏览器与服务器,服务与服务
        流程:
        1. 用户登陆验证通过时服务器生成token,并进行签名,发送给客户端
        2. 客户端存储token,每次通信传输token
        3. 服务器拿到token进行签名验证,通过则返回资源
 
        JWT:一种token的写法规范,好处是很好的适应鉴权与授权且安全性较高
        
        与session比较:
        1.session存储在服务器上,token存储在客户端上
        2. token能进行授权操作
        3. session只能用于B/S模式
 
 
 
(五)oauth2模式
        oatuh2协议用于第三方授权,最终也是通过token进行权限认证
        
        对象:第三方服务
        流程:
        1. 客户端向用户申请第三方服务权限
        2. 得到用户允许后客户单向认证服务器申请token
        3. 认证服务器确认后发放token
        4. 客户端使用token获取第三方服务的资源
        5. 第三方服务确认token无误后发放资源
 
 
   (六) 个人思考
1.为什么要进行统一授权与鉴权?
答:1.按照传统的模式每个服务都会有自己的一套用户权限认证体系,将其提取出来易于管理与维护,而每个服务就能专注与自己要做的事情不必在权限管理花费精力
  2.不只是用户与服务之间需要权限认证,服务与服务之间也需要进行权限校验,还有第三方客户的接入需要做的权限认证,因此有一个统一的权限管理中心就能更好的管理与实现
2.传统的认证方式的弊端
答:1. 首先HTTP头每次都需要传输用户名与密码是很不安全
  2. 单体应用中sessioin只能存储在它的服务器上,当使用其他服务器时就丢失了session,因此需要尽心session的复制粘贴
  3. 分布式session存储,每次进行权限认证都需要提取session会导致多次网络io,解决方法是本地服务进行session缓存,但这就要做好session同步更新,同时需要做好session共享空间的安全问题
3.单点登陆sso与oauth2区别
答:1.单点登陆是用于一个系统进行登陆后,用户在系统的其他子系统中就变成了登陆状态而无须重复登陆
  2.oauth2用于第三方登陆,而且往往这种登陆得到的权限都会被限制在一个小范围
  3.oauth2登陆后也是在原来的第三方服务中活动,而sso登陆后是在整个系统活动,例如oauth2微信登陆虎牙直播后用户主要在虎牙进行活动,可以刷礼物,可以发弹幕,但是不会去微信删除好友
 

猜你喜欢

转载自www.cnblogs.com/ming-szu/p/9395174.html
今日推荐