zoukankan      html  css  js  c++  java
  • 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微信登陆虎牙直播后用户主要在虎牙进行活动,可以刷礼物,可以发弹幕,但是不会去微信删除好友
     
  • 相关阅读:
    Metasploit自动攻击和选择模块攻击详解
    laravel 通过ftp上传的时候报错 Use of undefined constant FTP_BINARY
    Laravel--文件管理及上传自定义目录及文件名
    在从myql服务器上 取消主从关系和重新构建主从关系
    sql 从服务器取消主从复制
    pecl和pear 的区别和联系
    laravel中打印一个sql语句
    laravel 查询数据库first()返回的数据转数组
    [微信小程序]实现一个自定义遮罩层
    分享CSS3里box-shadow属性的使用方法,包括内阴影box-shadow:inset
  • 原文地址:https://www.cnblogs.com/ming-szu/p/9395174.html
Copyright © 2011-2022 走看看