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 migrate
to create the NATS organizationals models -
Run
python manage.py nsc-init
(optional) Initialize a new NATS operator. You are responsible for copying the generated.conf
file to your NATS server. If you choose to use an existing operator, you are responsible for runningnsc pull
as 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
black
linter: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
Organization
represents anaccount
in NATS multi-tenant account model - An
App
represents auser
in 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
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 |