用于生成安全范围的访问令牌的django应用程序。
django-access-tokens的Python项目详细描述
django访问令牌是用于生成安全范围的访问令牌的django应用程序。
功能
- 生成在模型实例级别授予权限的安全访问令牌, 模型、应用程序或全球。
- 在给定的期限后使访问令牌过期。
- 通过包含^{tt1}生成更紧凑的访问令牌$ 以及项目中的'django.contrib.contenttypes'。
安装
- 签出最新的django访问令牌版本,并复制或符号链接 access_tokens目录到PYTHONPATH中。如果使用pip,运行 pip install django-access-tokens。
- 将'access_tokens'添加到INSTALLED_APPS设置中。
- 可选地,ad'django.contrib.auth'和'django.contrib.contenttypes'以获取更多 压缩访问令牌。
生成令牌
令牌可以按如下方式生成:
tokens.generate(scope=(), key=None, salt=None)
令牌生成的一些示例:
from access_tokens import scope, tokens # Generate an access token granting change permission on a given model instance. change_instance_token = tokens.generate( scope.access_obj(your_instance, "your_app.change_your_model"), ) # Generate an access token granting add permission on a given model. change_model_token = tokens.generate( scope.access_model(YourModel, "your_app.add_your_model"), ) # Generate an access token for a custom 'publish' permission on a given app. publish_app_token = tokens.generate( scope.access_app("your_app", "publish"), ) # Generate an access token for a custom 'moderate' permission globally. publish_app_token = tokens.generate( scope.access_all("moderate"), ) # Generate a complex token that grants a number of permissions. kitchen_sink_token = tokens.generate( scope.access_obj(your_instance, "read", "write") + scope.access_all("publish", "moderate") )
生成令牌时要记住的一些事项:
- 可以使用addition+运算符组合多个scope.access_*调用。
- 权限被指定为字符串,您可以根据需要命名任意多个权限 在给定的scope.access_*调用中。
- 权限名称不必与'django.contrib.auth'定义的权限匹配。如果他们 如果不匹配,则生成的访问令牌将更小。
- 如果在scope.access_*调用中未命名任何权限,则返回的作用域有效 一文不值,因为它不授予任何权限。
验证令牌
令牌的验证如下:
tokens.validate(token, scope=(), key=None, salt=None, max_age=None)
令牌验证的一些示例:
from access_tokens import scope, tokens # See if the given token grants 'publish' permission on the given app. tokens.validate( some_token, scope.access_app("your_app", "publish"), ) # Test the above token again, but only allow tokens generated in the last five minutes. tokens.validate( some_token, scope.access_app("your_app", "publish"), max_age = 60 * 5, )
验证令牌时要记住以下几点:
- 如果令牌授予在中指定的权限的超集,则认为该令牌有效。 比较范围。
- 默认情况下,标记永远不会过期,但是可以通过传递max_age参数来强制过期 到tokens.validate。
- 令牌验证只应在用于生成它的代码出现错误时引发异常。 访问令牌上的错误签名或过期的max_age不会引发异常,但是 只会使验证失败并返回False。
安全性
django访问令牌通过序列化授予权限的表示来生成访问令牌 然后使用django.core.signing对其进行签名。因此,它使用最新的加密技术 由django核心团队开发,并将在升级django时保持最新。
为了让django访问令牌工作,保持使用的密钥是很重要的 生成一个秘密标记。默认情况下,令牌是使用settings.SECRET_KEY生成的。如果你 如果你相信你的密匙已经泄露,请立即更换。改变你的秘密 密钥还将立即使由此生成的所有访问令牌失效。