zoukankan      html  css  js  c++  java
  • JSON Web Token实际应用

    一、JWT认证方式的实现方式
    1.客户端不需要持有密钥,由服务端通过密钥生成Token。
    2.客户端登录时通过账号和密码到服务端进行认证,认证通过后,服务端通过持有的密钥生成Token,Token中一般包含失效时长和用户唯一标识,如用户ID,服务端返回Token给客户端。
    3.客户端保存服务端返回的Token。
    4.客户端进行业务请求时在Head的Authorization字段里面放置Token,如:Authorization: Bearer Token
    5.服务端对请求的Token进行校验,并通过Redis查找Token是否存在,主要是为了解决用户注销,但Token还在时效内的问题;如果Token在Redis中不存在,则说明用户已注销;如果Token存在,则校验通过。
    6.服务端可以通过从Token取得的用户唯一标识进行相关权限的校验,并把此用户标识赋予到请求参数中,业务可通过此用户标识进行业务处理。
    7.用户注销时,服务端需要把还在时效内的Token保存到Redis中,并设置正确的失效时长。

    二、在实际环境中如何使用JWT
    1.Web应用程序
    在令牌过期前刷新令牌。如设置令牌的过期时间为一个星期,每次用户打开Web应用程序,服务端每隔一小时生成一个新令牌。如果用户一个多星期没有打开应用,他们将不得不再次登录。
    2.移动应用程序
    大多数移动应用程序用户只进行一次登录,定期刷新令牌可以使用户长期不用登录。
    但如果用户的手机丢失,则可提供一种方式由用户决定撤销哪个设备的令牌。当然,这就需要服务端记录设备的名称,例如“maryo的iPad”。然后用户可以去申请并撤销获得“maryo的iPad”。当用户修改密码时需要服务端把原Token保存到Redis上,使其失效。

    为了防止Token被窃取,最好把JWT和HTTPS结合起来使用。

    三、如何实现安全认证与权限的结合
    服务端生成的Token中需要包含用户唯一标识,这样用户进行业务请求时,服务端通过附带的Token获取用户唯一标识,通过此标识进行权限检查。

    四、更换Token
    为了解决高并发访问时更换Token, 有可能造成用旧的Token的访问失败。

    在缓存中不保存Token,而是保存一个计数,每次更换Token时,计数加1,这个计数的值会跟用户ID一起加密后保存在新生成的Token中,返回给用户,用户每次访问时携带这个Token。验证用户Token时,用Token中的计数与缓存中保存的计数比较,如果差值范围在1~2之间就认为Token有效,这样即使在并发访问时,更换Token,计数值虽然不等,但在规定的差值范围内,也被认为有效,这样就解决了上面的Token失效问题

    基于Token的WEB后台认证机制

  • 相关阅读:
    基于 bootstrap html 响应式 布局
    柱状图 线状图 填写数据
    代码 比较工具 在线
    WEB框架之Flask
    测试学习方向
    软件测试的定义及其分类
    新博客人
    实现人脸识别性别之路---制作训练集中使用到的函数
    实现人脸识别性别之路---制作自己的训练集并读取
    实现人脸识别性别之路---opencv
  • 原文地址:https://www.cnblogs.com/linjiqin/p/6222174.html
Copyright © 2011-2022 走看看