web权限管理总结
Posted ming-szu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web权限管理总结相关的知识,希望对你有一定的参考价值。
(一)HTTP基本认证
对象:客户端与服务器
流程:
-
客户端请求头中Authorization域包含用户名与密码信息,供服务端认证
缺点:
1. 每次通信都传输用户名密码,不安全
(二)传统session-cookie模式
对象:浏览器与服务器,单一应用
流程:
1. 用户登陆时服务器将用户信息存储在session中
2. 服务器将sessionID发给客户端
3. 客户端将sessionID存储在cookie中
4. 每次通信客户端都需要将cookie一并发送
5. 服务器获取客户端发送的cookie来查询session,实现用户信息的获取
缺点:
session存储在服务器中,但在分布式系统中其他服务无法获取,只能通过复制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微信登陆虎牙直播后用户主要在虎牙进行活动,可以刷礼物,可以发弹幕,但是不会去微信删除好友
以上是关于web权限管理总结的主要内容,如果未能解决你的问题,请参考以下文章