Skip to main content

未提供项目描述

项目描述

django-dreiattest

dreiattest 利用pyttest并将其集成到 django 中。它处理路由、不同的配置选项以及令牌和公钥的持久性。要使用 dreiAttest,您需要使用iOSAndroid / Kotlin Multiplatform的相应库。

安装

dreiAttest 在 PyPI 上可用,可以通过$ python -m pip install dreiattest-django.

安装后确保添加dreiattest到您的INSTALLED_APPS并触发所有迁移python manage.py migrate dreiattest。此外,您需要在 urls.py 中注册默认端点

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('dreiattest.urls')),
    ...
]

配置

您可以或必须在 settings.py 中设置多个设置。以下是强制性的:

  • 苹果DREIATTEST_APPLE_APPID
  • 谷歌DREIATTEST_GOOGLE_APK_NAMEDREIATTEST_GOOGLE_APK_CERTIFICATE_DIGEST

这些是所有可能的配置值以及它们的作用。

  • DREIATTEST_BASE_URL:我们的不同端点,如 /key 和 /nonce 将在这个 slug 下方
  • DREIATTEST_UID_HEADER:包含 DeviceSession uid 的标头
  • DREIATTEST_ASSERTION_HEADER:包含断言的标头
  • DREIATTEST_USER_HEADERS_HEADER:包含在断言中的逗号分隔的标头列表的标头
  • DREIATTEST_NONCE_HEADER:包含在证明中使用的服务器随机数的标头
  • DREIATTEST_BYPASS_HEADER:包含共享密钥的标头以绕过验证过程。有助于调试
  • DREIATTEST_APPLE_APPID:包含苹果应用程序 ID 的标头
  • DREIATTEST_GOOGLE_APK_NAME:包含 google apk 名称的标头
  • DREIATTEST_PRODUCTION:指示我们是否处于生产环境中。如果这是真的,将进行一些额外的验证。这些在pyttest自述文件中进行了描述。
  • DREIATTEST_GOOGLE_APK_CERTIFICATE_DIGEST:Google APK 证书的 SHA256 十六进制
  • DREIATTEST_PLUGINS:实现的类列表BasePlugin- 为您提供处理额外验证的选项
  • DREIATTEST_BYPASS_SECRET: DANGERZONE如果设置了此项并且客户端发送了 DREIATTEST_BYPASS_HEADER,则跳过验证。

您可以在settings.py中找到它们每个的默认值(如果有)

用法

剩下的就是添加signature_required视图装饰器。

from dreiattest.decorators import signature_required

@signature_required()
def demo(request: WSGIRequest):
    return JsonResponse({'foo': 'bar'})

错误处理

您应该处理的主要两个异常是PyAttestExceptionDreiAttestExceptionHandleDreiattestExceptionsMiddleware如果您不想自己处理这些错误,可以使用dreiattest 。中间件仅捕获这两个异常类并返回JsonResponse状态码 400。

MIDDLEWARE = [
    ...
    'dreiattest.middlewares.HandleDreiattestExceptionsMiddleware',
]

典型流程

  1. CLIENT(可能是 android 或 google)使用设备会话标识符向 dreiattest/nonce 发出请求,以获取服务器 nonce。会话 ID 和随机数都保存在服务器上。
  2. CLIENT 向 dreiattest/key 发送证明。此请求再次保存设备会话标识符以及步骤 1 中的 nonce。nonce 将被标记为“已使用”并用于验证证明。然后将来自客户端的公钥分配给设备会话并保存在数据库中。
  3. CLIENT 向任何用 装饰的视图发送请求@signature_required。该请求包含一个断言,该断言将在执行实际 django 视图之前进行验证。

出版/投稿

  • master为可能的拉取请求创建一个分支
  • 向 pypi 发布新版本:
    • 更新版本__version__.py
    • 触发器$ pipenv run upload- 这将自动在 git 中创建并推送正确的标签并将该版本上传到 pypi

项目详情


下载文件

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

源分布

django-dreiattest-0.0.26.tar.gz (12.1 kB 查看哈希)

已上传 source

内置分布

django_dreiattest-0.0.26-py2.py3-none-any.whl (16.8 kB 查看哈希

已上传 py2 py3