当前位置:   article > 正文

python+request 接口自动化 jwt Token封装实现_python request加token

python request加token
一、什么是Token

Token可以理解为一种特殊的加密密码或者暗号;只有暗号匹配才能通过,否则就是“敌人”;

我们在登录XX站点,XX系统都需要输入自己的用户名和密码;但是在接口调用过程中,为了账号加密安全性,不能明文将账号密码放入到请求体或请求头中;

所以需要一种加密方式—暗号,这种暗号格式可以自己定义,那么只有“自己人”知道;

从而达到加密安全调用和请求对方接口;

1、正常输入账号密码的请求过程:

      1)登录页面登录后,服务端会生成token返回给客户端并缓存;

      2)后续操作业务页面,会默认带上缓存的token;从而能对上暗号,实现正常的请求;

2、调用接口直接请求服务端,可以使用2中方法:

     1)调用登录接口后,获得返回的token,在后续请求头或者url中带上token;

     2)知道加密盐后,生成token,在接口请求中带上生成的token;

二、Token包含内容

Token的格式可以自行约定,如下就是一个较简单的Token

  1. {
  2. "iss": "xx应用",
  3. "iat": 1702xxxxx,
  4. "jti": "0AC3291A-88E9-017D-DF00-9CE0ECC29446",
  5. "u": "admin",
  6. "c": "",
  7. "a": "Mysoft",
  8. "t": "xxxxxxxx"
  9. }

Token为了安全性,一次生成的token只能使用一次,下次使用需要按照规则重新生成;所以在以上的token中加入了时间戳(iat)和 uuid(jti);

时间戳:是为了限制token有效期

uuid:是为了限制token使用次数,如果两次请求的id相同,那么服务端就会自动判断token无效;

所以我们自己要封装token,基于以上这个案例,我们需要每次动态生成时间戳和uuid

三、请求Token封装

如下是python代码实现的基于jwt的token封装:

token分为三部分:data(数据)、secret(盐)、algorithm(加密方式)

分四步实现:

1、准备data

2、替换时间戳和uuid

3、准备加盐,此为实现服务端约定好的秘钥

4、加密生成最终token

  1. # jwt生成token
  2. def newToken(tenantName):
  3. # 1、token格式模板
  4. ds = '{"iss": "xxx应用","iat": 1702xxxx,"jti": "0AC3291A-88E9-017D-DF00-9CE0ECCxxxxx","u": "admin","c": "","a": "Mxxxx","t": "ompseyxxxx"}'
  5. payload = json.loads(ds) # 转换为json
  6. timestamp = time.time() # 生成时间戳
  7. timestamp = round(timestamp)
  8. guid = uuid.uuid4() # 生成guid
  9. # print(guid)
  10. # 2、替换模板中的值
  11. payload['iat'] = timestamp # 修改时间戳
  12. payload['jti'] = str(guid) # 修改随机guid
  13. payload['t'] = tenantName # 修改租户
  14. # print(payload)
  15. # print(type(payload))
  16. # payload = json.dumps(data)
  17. # 3、加盐
  18. secret = 'ff483a6526xxxxxx5'
  19. # 4、加密生成token
  20. token = jwt.encode(payload, secret, algorithm='HS256')
  21. # print(token)
  22. # Authorization = 'Bearer '+token
  23. return token

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/893683
推荐阅读
相关标签
  

闽ICP备14008679号