跳转到主要内容

临时Django REST Framework权限范围令牌

项目描述

Build Status Requirements Status

rest_framework_tmp_scoped_token提供了一款与Django REST Framework兼容的系统,用于生成和验证签名授权令牌。生成的令牌包含代表令牌持有者进行认证的用户ID、允许访问的HTTP动词和API端点的白名单、令牌的最大有效期以及关于预期接收者的备注。

用法

授权

rest_framework_tmp_scoped_token.TokenAuth添加到settings.pyREST_FRAMEWORK设置的DEFAULT_AUTHENTICATION_CLASSES部分

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

要使用临时权限令牌进行认证,请将令牌包含在以下任一位置:

  • 带有TmpToken关键字的Authorization HTTP头

    Authorization: TmpToken eyJzb21ldGhpbmctc2VjcmV0IjoiaG9wZSBub2JvZHkgc2VlcyB0aGlzIn0:1d47N6:woJG0EgLNDb0OjYQmCbsjniP-2Y
  • TOKEN GET查询参数

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

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

令牌

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

  • user:将被令牌认证的用户。

  • endpoints:令牌授权访问的HTTP方法和端点根的键值对。以下值将授权令牌对以“api/v1/foo”开头的任何端点进行GET请求。

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

    注意:此令牌不会覆盖系统内关联用户的所有现有权限。它仅对可以访问的端点添加额外的限制。

  • max_age:令牌有效的秒数。默认情况下,令牌将有效期为1小时。不支持非过期令牌。

  • 接收者: (可选) 对于此令牌的接收者提供的文本描述。对此数据不进行验证,但由伴随的DRF认证方案将其作为X-API-Token-Recipient头信息附加到请求中。这是为了跟踪目的。

注意:令牌通过Django的`signing` <https://docs.django.ac.cn/en/dev/topics/signing/>功能进行签名。重要的是要知道令牌未加密,只是进行了签名。因此,您不应在令牌中包含任何敏感/机密信息。例如,注意查看签名字符串内容是多么容易。

In [1]: from django.core import signing

In [2]: t = signing.dumps({'something-secret': 'hope nobody sees this'})

In [3]: print(t)
eyJzb21ldGhpbmctc2VjcmV0IjoiaG9wZSBub2JvZHkgc2VlcyB0aGlzIn0:1d47N6:woJG0EgLNDb0OjYQmCbsjniP-2Y

In [4]: import base64

In [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

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

drf-tmp-scoped-token-0.2.1.tar.gz (7.5 kB 查看散列)

上传时间

构建分发

drf_tmp_scoped_token-0.2.1-py3-none-any.whl (11.7 kB 查看散列)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面