临时django rest framework权限范围内的令牌

drf-tmp-scoped-token的Python项目详细描述


Build StatusRequirements Status

rest_framework_tmp_scoped_token提供django rest 生成和验证签名的框架兼容系统 授权令牌。生成的令牌包含其上的用户的ID 代表令牌持有者进行身份验证,http动词和 承载者被允许访问的API端点,最大寿命为 令牌,以及关于预期收件人的便条。

用法

授权

rest_framework_tmp_scoped_token.TokenAuth添加到 DEFAULT_AUTHENTICATION_CLASSES您的^{tt4}部分$ settings.py中的设置:

REST_FRAMEWORK={'DEFAULT_AUTHENTICATION_CLASSES':(# ... Your other forms of auth'rest_framework_tmp_scoped_token.TokenAuth',)}

要使用临时权限令牌进行身份验证,请使用 包含在以下任一项中的令牌:

  • 带有TmpToken关键字的AuthorizationHTTP头:

    Authorization: TmpToken eyJzb21ldGhpbmctc2VjcmV0IjoiaG9wZSBub2JvZHkgc2VlcyB0aGlzIn0:1d47N6:woJG0EgLNDb0OjYQmCbsjniP-2Y
  • 一个TOKENGET查询参数:

    /api/?TOKEN=eyJzb21ldGhpbmctc2VjcmV0IjoiaG9wZSBub2JvZHkgc2VlcyB0aGlzIn0:1d47N6:woJG0EgLNDb0OjYQmCbsjniP-2Y

如果要自定义Authorization头 关键字或使用的GET查询参数,可以将 rest_framework_tmp_scoped_token.TokenAuth类并重写 keywordget_param值。

代币

要生成令牌,请使用 rest_framework_tmp_scoped_token.TokenManager类。代币 包含以下信息:

  • user:将通过令牌进行身份验证的用户。

  • endpoints:key:http方法和端点根的值对 该令牌被授权访问。以下值将 授权令牌向任何开始的终结点发出get请求 使用api/v1/foo

    {'GET':['/api/v1/foo']}

    ^ {STR 1 } $Note :此令牌将不会覆盖任何现有权限 对于系统中的关联用户。它只会进一步增加 对可以访问的终结点的限制。

  • max_age:令牌有效的时间(秒)。由 默认情况下,令牌有效期为1小时非过期令牌不是 支持。

  • 收件人(可选)收件人的文本描述 为了这个代币。没有对此进行验证 数据,但是它作为 X-API-Token-Recipient头由附带的drf 身份验证方案。这是为了跟踪目的

note:令牌通过django的签名 `signing<;https://docs.djangoproject.com/en/dev/topics/signing/>;。`_ 设施必须知道标记未加密, 他们只是签了名。因此,您不应该包括任何 令牌中的敏感/机密信息。例如,请注意 查看签名字符串的内容很简单:

In[1]:fromdjango.coreimportsigningIn[2]:t=signing.dumps({'something-secret':'hope nobody sees this'})In[3]:print(t)eyJzb21ldGhpbmctc2VjcmV0IjoiaG9wZSBub2JvZHkgc2VlcyB0aGlzIn0:1d47N6:woJG0EgLNDb0OjYQmCbsjniP-2YIn[4]:importbase64In[5]:print(base64.urlsafe_b64decode(t.encode('utf8')))b'{"something-secret":"hope nobody sees this"}5w\x8e\xcd\xeb\n\t\x1bA ,\xd0\xdb\xd0\xe8\xd8B`\x9b\xb29\xe2?\xed\x98'

贡献

测试

pip install -r requirements-test.txt
./runtests

部署

pip install -r requirements-deploy.txt
python setup.py test clean build tag publish

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java NIO选择器最多只能选择50个SelectionKeys?   java阻止ImageButton创建新活动   为什么Java方法“Arrays.copyOf”处理中的整数数组与处理对象数组时的行为不同   java将安卓 1.6日历字段提取到vcal   将字符串转换为双精度后的java问题   java使用Webflux,是否可以使用AOP获取用于日志记录的ServerHttpRequest   java与jTextArea的基本区别是什么。setText()和jTextArea。append()方法?   java程序执行时间|将值保存到文件或数据结构?   java如何将表示字符的整数转换为字符串?   Java LWJGL新的渲染问题windows   java GUI提供异常   java创建第二个对象使类的函数不再工作   如何在java中将000验证为3位数字?   java bigO算法的时间复杂度,可以在不重复的情况下找到最长的子串   在30像素内点击按钮后,java在两个图像之间转换   java eclipse maven nexus不可解父pom   当存在其他SecurityConstraint时,java TransportGuary机密将被忽略   重新连接后激发的java Red5客户端流断开事件   javafx聊天应用程序中连接客户端的java问题