access_token存在意义:

   1、身份验证(一个channel_id一般有0个或1个有效的access_token)

  2、限制用户访问服务器数据的有效期

  3、限制用户访问权限

  access_token执行流程:

  

  总结access_token几个要点:

  1、token是在使用方请求服务器后,服务器再生成token并进行返回

  2、请求放将返回的token记录下来,请求数据后,头请求中将附带token信息,服务器进行接收token是否正确并且在有效时间内

  

  问:为什么我们在写接口的时候,还要用access_token进行身份验证?

    因为用appid+app密钥就可以进行身份校验的(appid+app密钥:类似我们QQ登录的用户名+密码)

  答: 

    1. 额外安全性(保密性):access_token 即使泄露了,攻击者也不会知道帐号拥有者的密码。
    2. 额外安全性(权限范围性):access_token可以限制於某几个接口的使用权限,而不是帐号的全部权限,如果泄露了,也不会让攻击者得到夺取整个帐号的权限。
    3. 额外安全性(时间性):access_token只会在10-20分钟内有效,所以即使泄露了,攻击者操作的时间空间也只有10-20分钟。
    4. 额外安全性(客户端安全管理):在客户端需要用户手动输入密码的时候, access_token 能让客户端不用把密码保存下来(几乎没有完全安全的保存方法),而只需要保存access_token ,减低泄密风险。
    5. 性能:服务器重视数据安全时,或者在验证过程中会对密码运行很多次的Hashing,才对数据库进行比对(这是为了防止数据库泄露后,密码被暴力破解的防御环节之一),因此每一次验证密码也对服务器的性能消耗比较大。access_token可以让服务器在它失效时才验证一次,大幅减少性能开销。

    6. 更容易管理:服务端可以随时终止一个access_token、生成新的access_token,而不影响app密钥。
    7. 更灵活:可以容许一个帐号有不同的access_token、在不同环境操作(例如:测试环境、生产环境 同一帐号有不同的access_token)
    8. 抽象化:access_token代表着"已经成功验证,并获得某些权限",所以业务操作可以只判断access_token,而不用理会验证方式是怎样(例如:用QQ登入,还是用指纹)

  以上

  END

最新文章

  1. javascript关于继承
  2. Ubuntu vi 常用命令集合
  3. sdk更新代理设置
  4. hdu4982 Goffi and Squary Partition (DFS解法)
  5. 32. Path Sum && Path Sum II
  6. Swift中的字典
  7. Go运行环境搭建(Mac\Linux)
  8. jquery保存用户名和密码到cookie里面
  9. Struts2笔记——自定义拦截器
  10. Unity3d开发wp8问题汇总
  11. iOS开发(Objective-C)常用库索引
  12. 简单dp hdu-4105-Electric wave
  13. javascript笔记整理(概述,变量,数据类型)
  14. hdu 4715 Difference Between Primes (打表 枚举)
  15. 函数调用过程&生成器解释
  16. debounce去弹跳
  17. Spring Boot通过命令行启动发生FileNotFoundException
  18. day27 多继承 super 详细用法
  19. Unity 3D中ToLua-UGUI使用说明、导入Unity流程、制作登陆界面
  20. CEPH LIO iSCSI Gateway

热门文章

  1. java 中 静态泛型方法书写
  2. Vscode 配置 maven debug
  3. C语言中复杂的声明
  4. Luogu P1471 方差 线段树
  5. redis备份恢复
  6. linux / OS 杀死进程
  7. linux磁盘与文件管理
  8. 设定计划的SMART原则
  9. jinkens + svn 把代码更新到本地在运行。(方法比较笨,只是想实现自己的想法。把代码更新下来在运行。)
  10. gulp不压缩打包layui