Django NATS Nkey是一个Django应用,用于同步Django超级用户、账户和用户与基于NATS nkey的身份验证/授权方案
项目描述
Django Nats NKEYS
NATS是一个基于消息服务的基础设施平台。
此Django应用将NATS的多租户账户范式与Django Organizations集成。
使用NATS nsc工具来管理操作员、账户和用户的JWT。
快速入门
-
pip install django-nats-nkeys[drf] -
将其添加到您的INSTALLED_APPS设置中
INSTALLED_APPS = [ ... "organizations", "django_extensions", "django_nats_nkey", ] -
运行
python manage.py migrate以创建NATS组织模型 -
运行
python manage.py nsc-init(可选)初始化新的NATS操作员。您负责将生成的.conf文件复制到您的NATS服务器。如果您选择使用现有的操作员,您负责在部署前运行nsc pull。
贡献者指南
-
创建开发环境(需要docker & docker-compose)
make docker-up make nsc-init -
运行测试并生成覆盖率报告
make pytest -
运行
black代码检查器make lint
设置
基本设置
NATS_NSC_DATA_DIR(默认:"/var/lib/nats/nsc/stores"或$NSC_STORE环境变量)NATS_NSC_CONFIG_DIR(默认:"/var/lib/nats/nsc/config"或$NSC_HOME环境变量)NATS_NSC_KEYSTORE_DIR(默认:"/var/lib/nats/nsc/keys"或$NKEYS_PATH环境变量)NATS_SERVER_URI(默认:"nats://nats:4222")NATS_NKEYS_IMPORT_DIR(默认:".nats/")NATS_NKEYS_EXPORT_DIR(默认:".
重试模式
NATS_NSC_RETRY_MODE (默认值 "STRICT",允许的值:"STRICT" 或 "IDEMPOTENT")
在 STRICT 模式下,如果 nsc add ... 命令返回 "已存在" 错误,将引发 django_nats_nkey.errors.NscConflict。您需要实现一个单独的过程来处理 Django 模型与 nsc 环境之间的最终一致性。
在 IDEMPOTENT 模式下,冲突将以 WARNING 级别记录,但不会引发 Exception。在此模式下,nsc add 命令可能会多次重试,如果资源已存在,则不会执行任何操作。
组织模型
- 基于 Django organizations
Organization代表 NATS 多租户账户模型 中的accountApp代表 NATS 多租户账户模型 中的user
NATS_ORGANIZATION_MODEL (默认值: "django_nats_nkeys.NatsOrganization")
- 必须继承
django_nats_nkeys.models.NatsOrganization
NATS_ORGANIZATION_OWNER_MODEL (默认值: "django_nats_nkeys.NatsOrganizationOwner")
- 必须继承
django_nats_nkey.models.NatsOrganizationOwner
NATS_ORGANIZATION_APP_MODEL (默认值: "django_nats_nkey.NatsOrganizationApp")
- 必须继承
django_nats_nkey.models.AbstractNatsApp
NATS_ORGANIZATION_USER_MODEL (默认值: "django_nats_nkeys.models.NatsOrganizationUser")
- 必须继承
django_nats_nkeys.models.NatsOrganizationUser
机器人/自动化模型
NATS_ROBOT_APP_MODEL (默认值: "django_nats_nkeys.NatsRobotApp")
NATS_ROBOT_ACCOUNT_MODEL (默认值: "django_nats_nkeys.NatsRobotAccount")
应用程序模型
NATS_APP_MODELS (默认值: [ "django_nats_nkey.NatsOrganizationApp" , "django_nats_nkeys.NatsRobotApp" ])
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪一个,请了解有关 安装包 的更多信息。