用于管理签名身份验证令牌的通用库。
tokenlib的Python项目详细描述
这是用于执行基于令牌的身份验证的通用支持库。你 可以使用它来构建使用承载令牌、双腿oauth或 MAC访问身份验证。
给定一个服务器端主密钥,您可以将数据的dict序列化为 不透明、不可伪造的身份验证令牌:
>>> token = tokenlib.make_token({"userid": 42}, secret="I_LIKE_UNICORNS") >>> print token eyJzYWx0IjogImY0NTU5NCIsICJleHBpcmVzIjogMTMyOTg3NTI2Ny4xNDQ5MzUsICJ1c2VyaWQiOiA0Mn0miXCe4NQQtXTE8NXSGcsL6dzSuQ==
稍后,您可以使用相同的机密来验证令牌并提取 嵌入式数据:
>>> data = tokenlib.parse_token(token, secret="I_LIKE_UNICORNS") >>> print data {u'userid': 42, u'expires': 1329875384.073159, u'salt': u'1c033f'}
请注意,数据包含一个到期时间。如果您试图分析过期的 令牌,它将失败:
>>> # Use now=XXX to simulate a time in the future. >>> tokenlib.parse_token(token, secret="I_LIKE_UNICORNS", now=9999999999) Traceback (most recent call last): ... ValueError: token has expired
同样,如果令牌是用不匹配的机密构造的,则它将失败 键:
>>> tokenlib.parse_token(token, secret="I_HATE_UNICORNS") Traceback (most recent call last): ... ValueError: token has invalid signature
每个令牌还具有关联的“令牌机密”。这是一把秘密钥匙 可以与令牌的使用者共享以启用身份验证方案 如双腿OAuth的MAC访问认证:
>>> key = tokenlib.get_token_secret(token, secret="I_LIKE_UNICORNS") >>> print key EZslG8yEYTGyDvBjRnxGipL5Kd8=
对于反复使用相同设置的应用程序,您可以 可能需要创建一个tokenmanager对象,而不是使用 模块级便利功能:
>>> manager = tokenlib.TokenManager(secret="I_LIKE_UNICORNS") >>> data = manager.parse_token(token) >>> print data {u'userid': 42, u'expires': 1329875384.073159, u'salt': u'1c033f'}
这将允许您自定义令牌到期超时或哈希模块 不重复每次通话中的设置。
2.0.0-2017年12月20日
- Py27, Py35 compliant
0.3.1-2014-01-08
- 将tokenlib.default_hashmod设为字符串。
- 修复偶尔失败的测试。
0.3.0-2014-01-08
- 澄清许可信息
- 切换到SHA256作为默认哈希算法
- 将get_token_secret重命名为get_derived_secret以澄清 用途;保留以前的名称,但已弃用。
- 为更细粒度的错误报告添加了自定义valueerror子类。
0.2.0-2012年11月27日
- 通过源代码级兼容性支持python3
0.1.0-2012年3月14日
- Initial release.