前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >token的介绍和用python 生成t

token的介绍和用python 生成t

作者头像
py3study
发布2020-01-08 17:45:41
1.8K0
发布2020-01-08 17:45:41
举报
文章被收录于专栏:python3python3

基本概念

Token 的中文意思是“令牌”。主要用来身份验证。 Facebook,Twitter,Google+,Github 等大型网站都在使用。比起传统的身份验证方法,Token 有扩展性强,安全性高的特点,非常适合用在 Web 应用或者移动应用上。

验证方法

使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

1. 客户端使用用户名跟密码请求登录

2. 服务端收到请求,去验证用户名与密码

3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端

4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里

5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token

6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

python常用Token生成方法

  1. binascii.b2a_base64(os.urandom(24))[:-1]

使用举例:

>>> import binascii

>>> import os

>>>binascii.b2a_base64(os.urandom(24))[:-1]

b'J1pJPotQJb6Ld+yBKDq8bqcJ71wXw+Xd'

这种算法的优点是性能快, 缺点是有特殊字符, 需要加replace 来做处理。

  1. sha1(os.urandom(24)).hexdigest()

使用举例:

>>> import hashlib

>>> import os

>>> hashlib.sha1(os.urandom(24)).hexdigest()

'21b7253943332d0237a720701bcb8161b82db776'

这种算法的优点是安全,不需要做特殊处理。缺点是覆盖范围差一些。

  1. uuid4().hex

使用举例:

>>> import os

>>> import uuid

>>> uuid.uuid4().hex

'c58a80d3b7864b0686757b95e9626e47'

Uuid使用起来比较方便, 缺点为安全性略差一些。

  1. base64.b32encode(os.urandom(20))/base64.b64encode(os.urandom(24)) >>> import base64 >>> import os >>>base64.b32encode(os.urandom(20)) b'NJMTBMOYIXHNRATTOTVONT4BXJAC25TX' >>>base64.b64encode(os.urandom(24)) b'l1eU6UzSlWsowm8M8lH5VaFhZEAQ4kQj'

特别说明:

1. 可以用base64的地方,选择 binascii.b2a_base64 是不错的选择 —— 根据W3的SessionID的字串中对identifier的定义,SessionID中使用的是base64,但在Cookie的值内使用需要注意“=”这个特殊字符的存在;

2. 如果要安全字符(字母数字),SHA1也是一个不错的选择,性能也不错;

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档