Django NATS Nkey is a Django app to synchronize Django superusers, accounts, and users with NATS nkey-based authentization/authorization scheme
Project description
Django Nats NKEYS
NATS is an infrastructure platform for building message-based services.
This Django app integrates NAT's multi-tenant account paradigm with Django Organizations.
The NATS nsc tool is used to manage operator, account, and user JWTs.
Quick start
-
pip install django-nats-nkeys[drf] -
Add to your INSTALLED_APPS settings:
INSTALLED_APPS = [ ... "organizations", "django_extensions", "django_nats_nkey", ] -
Run
python manage.py migrateto create the NATS organizationals models -
Run
python manage.py nsc-init(optional) Initialize a new NATS operator. You are responsible for copying the generated.conffile to your NATS server. If you choose to use an existing operator, you are responsible for runningnsc pullas a pre-deployment step.
Contributor's Guide
-
Create a development environment (requires docker & docker-compose):
make docker-up make nsc-init -
Run tests and generate a coverage report:
make pytest -
Run
blacklinter:make lint
Settings
Basic Settings
NATS_NSC_DATA_DIR (default: "/var/lib/nats/nsc/stores" or $NSC_STORE environment var)
NATS_NSC_CONFIG_DIR(default: "/var/lib/nats/nsc/config" or $NSC_HOME environment var)
NATS_NSC_KEYSTORE_DIR (default: "/var/lib/nats/nsc/keys" or $NKEYS_PATH environment var)
NATS_SERVER_URI (default: "nats://nats:4222")
NATS_NKEYS_IMPORT_DIR (default: ".nats/", )
NATS_NKEYS_EXPORT_DIR (default: ".nats/")
NATS_NKEYS_OPERATOR_NAME (default: "DjangoOperator")
Retry Mode
NATS_NSC_RETRY_MODE (default "STRICT", allowed values: "STRICT" or "IDEMPOTENT")
In STRICT mode, django_nats_nkey.errors.NscConflict will be raised if nsc add ... command returns an "already exists" error. You are responsible for implementing a separate process to handle eventual consistency between Django models and nsc environment.
In IDEMPOTENT mode, conflict is logged at the WARNING level but no Exception is raised. In this mode, nsc add command may be retried many times and will be a no-op if resource already exists.
Organization Models
- Based on Django organizations
- An
Organizationrepresents anaccountin NATS multi-tenant account model - An
Apprepresents auserin NATS multi-tenant account model
NATS_ORGANIZATION_MODEL (default: "django_nats_nkeys.NatsOrganization")
- Must subclass
django_nats_nkeys.models.NatsOrganization
NATS_ORGANIZATION_OWNER_MODEL (default: "django_nats_nkeys.NatsOrganizationOwner")
- Must subclass
django_nats_nkey.models.NatsOrganizationOwner
NATS_ORGANIZATION_APP_MODEL (default: "django_nats_nkey.NatsOrganizationApp")
- Must subclass
django_nats_nkey.models.AbstractNatsApp
NATS_ORGANIZATION_USER_MODEL (default: "django_nats_nkeys.models.NatsOrganizationUser")
- Must subclass
django_nats_nkeys.models.NatsOrganizationUser
Robot/Automation Models
NATS_ROBOT_APP_MODEL (default: "django_nats_nkeys.NatsRobotApp")
NATS_ROBOT_ACCOUNT_MODEL (default: "django_nats_nkeys.NatsRobotAccount")
App Models
NATS_APP_MODELS (default: [ "django_nats_nkey.NatsOrganizationApp" , "django_nats_nkeys.NatsRobotApp" ])
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_nats_nkeys-0.10.1.tar.gz.
File metadata
- Download URL: django_nats_nkeys-0.10.1.tar.gz
- Upload date:
- Size: 28.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b4185b883556c71657b35fb718a4c12278aa308620188f4778743d3bdcfef75
|
|
| MD5 |
829617a753c15ed022c8fffd2dcc0b2a
|
|
| BLAKE2b-256 |
1927c21e25564020fdfc1efd69b02c372d2fbabdb5de589e465fca3dde075a0e
|
File details
Details for the file django_nats_nkeys-0.10.1-py3-none-any.whl.
File metadata
- Download URL: django_nats_nkeys-0.10.1-py3-none-any.whl
- Upload date:
- Size: 822.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3be83a6d6afed91685d338c1a1e6abb57d3ec681d8c7b7c4ada288f78ec9bf89
|
|
| MD5 |
48df370a3f45a0f75d26712c171a26f5
|
|
| BLAKE2b-256 |
1aefee72720ec35747ae3301b6dff0831e71f6b45f43cca6359cfe7bddf26d88
|