Skip to main content

Django Nats NKEYS

image image image image image image image image

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

  1. pip install django-nats-nkeys[drf]

  2. Add to your INSTALLED_APPS settings:

    INSTALLED_APPS = [
        ...
        "organizations",
        "django_extensions",
        "django_nats_nkey",
    ]
    
  3. Run python manage.py migrate to create the NATS organizationals models

  4. 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 running nsc pull as a pre-deployment step.

Contributor's Guide

  1. Create a development environment (requires docker & docker-compose):

    make docker-up
    make nsc-init
    
  2. Run tests and generate a coverage report:

    make pytest
    
  3. 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

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" ])

Metadata

Release files for django-nats-nkeys 0.10.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-nats-nkeys 0.10.1
File Size Uploaded Provenance Actions
django_nats_nkeys-0.10.1.tar.gz 28.0 kB Without provenance Details for django_nats_nkeys-0.10.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for django-nats-nkeys 0.10.1
File Interpreter ABI Platform Actions
django_nats_nkeys-0.10.1-py3-none-any.whl Python 3 none any Details for django_nats_nkeys-0.10.1-py3-none-any.whl

Total release size: 850.6 kB

Release files / django_nats_nkeys-0.10.1.tar.gz

Download URL django_nats_nkeys-0.10.1.tar.gz
Size 28.0 kB
Tags Source
SHA-256 checksum
How to use checksums
7b4185b883556c71657b35fb718a4c12278aa308620188f4778743d3bdcfef75
BLAKE2b-256 checksum
How to use checksums
1927c21e25564020fdfc1efd69b02c372d2fbabdb5de589e465fca3dde075a0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Release files / django_nats_nkeys-0.10.1-py3-none-any.whl

Download URL django_nats_nkeys-0.10.1-py3-none-any.whl
Size 822.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3be83a6d6afed91685d338c1a1e6abb57d3ec681d8c7b7c4ada288f78ec9bf89
BLAKE2b-256 checksum
How to use checksums
1aefee72720ec35747ae3301b6dff0831e71f6b45f43cca6359cfe7bddf26d88
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Security for django-nats-nkeys 0.10.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page