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 多租户账户模型 中的account
App
代表 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" ]
)
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪一个,请了解有关 安装包 的更多信息。