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"
)
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
Hashes for django_nats_nkeys-0.7.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1bbe015fc6a25ec56b9ab2e649238cc4d258a4d81d1233b3b58638a255191303 |
|
MD5 | 540c547b3eb580dc0addd12a458e187d |
|
BLAKE2b-256 | 996d3f24dc584317c93e3c7c5f39ba64bb9153cde366fc8b25412462ce7b9508 |