用于生成安全范围的访问令牌的django应用程序。

django-access-tokens的Python项目详细描述


django访问令牌是用于生成安全范围的访问令牌的django应用程序。

功能

  • 生成在模型实例级别授予权限的安全访问令牌, 模型、应用程序或全球。
  • 在给定的期限后使访问令牌过期。
  • 通过包含^{tt1}生成更紧凑的访问令牌$ 以及项目中的'django.contrib.contenttypes'

安装

  1. 签出最新的django访问令牌版本,并复制或符号链接 access_tokens目录到PYTHONPATH中。如果使用pip,运行 pip install django-access-tokens
  2. 'access_tokens'添加到INSTALLED_APPS设置中。
  3. 可选地,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生成的。如果你 如果你相信你的密匙已经泄露,请立即更换。改变你的秘密 密钥还将立即使由此生成的所有访问令牌失效。

更多信息

django访问令牌项目是在Mohawk开发的,并且 在麻省理工学院的许可下作为开源发布。

您可以从django-access-tokens project site获取代码。

贡献者

以下人员参与了该项目的开发。

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

推荐PyPI第三方库


热门话题
java Cancel SQL语句与JDBC   java如何避免线程耗尽   JAVA字符串反转文件io中字符串的顺序   java Datagramsocket:如何接收(…)处理数据包的碎片   为什么通过Javascript访问DOM文档比Java更快?   java在安卓中为从X高度落下的球绘制高度v/s时间图   接收活动的java Android实用程序方法   java如何使用时间线设置按钮的动画?   当getItemCount()大于0时,java JComboBox会显示空白区域   java使用camelbindy或beanio解析keyvalue文本文件   java Ant在中找不到类。它制作的jar文件   java这个XML/XSD有什么问题?   java如何从cookie中获取会话id?