Skip to main content

Authenticate to Django with JSON Web Tokens (JWTs) signed by Cloudflare Access

Project description

Authenticate to Django with JSON Web Tokens (JWTs) signed by Cloudflare Access. A Django reimplementation of https://developers.cloudflare.com/cloudflare-one/identity/authorization-cookie/validating-json/#python-example

To run the demo, set the following environment variables:

export ALLOWEDFLARE_ACCESS_URL=https://your-organization.cloudflareaccess.com
export ALLOWEDFLARE_AUDIENCE=64-character hexidecimal string
export ALLOWEDFLARE_PRIVATE_DOMAIN=your-domain.tld

Then run

docker compose up

Configure Cloudflare Tunnel public hostname demodj.your-domain.tld to http://localhost:8001 or equivalent.

TODO

  • Iterate on the same-origin (re-)authenticating proxy
  • Iterate on Admin site ModelBackend
    • http://localhost:8001/admin/login/ text when authenticated is "You are authenticated as , but are not authorized to access this page. Would you like to login to a different account?"
  • Expand unit test coverage
  • Basic integration and end-to-end tests
  • mTLS support and testing
  • Configure PostgreSQL
    • Post-migration hook to create a readonly DB user
    • Use the readonly DB user for django-sql-explorer and jupyterhub
    • Update the django-sql-explorer allowlist to accept SET since it's only dangerous for MySQL
    • Exclude only specific fields, like password hash, from the django-sql-explorer view of the django.contrib.auth schema
    • See if admin site change history fields can be shown in the django-sql-explorer schema viewer

Open Questions

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

allowedflare-2024.28.1.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

allowedflare-2024.28.1-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file allowedflare-2024.28.1.tar.gz.

File metadata

  • Download URL: allowedflare-2024.28.1.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.3

File hashes

Hashes for allowedflare-2024.28.1.tar.gz
Algorithm Hash digest
SHA256 fadad7fc9f2b26b7302484ee70fb3b08d2e41e9ab4e109df45d072b1af61e4c4
MD5 58f4ab4c9f6e9baacd32af75320a4581
BLAKE2b-256 0ad22ef87183aecd7f78feffa0f274316be918a7f8b073a9224f92e5bf8e531a

See more details on using hashes here.

File details

Details for the file allowedflare-2024.28.1-py3-none-any.whl.

File metadata

File hashes

Hashes for allowedflare-2024.28.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6c4c8e40a1e07a7ee20b532d6c9bed4a0f9a80bda5e6ff27dee6b29c98e71fdf
MD5 4e0a7e84eaebbcfd8532d49f69819a48
BLAKE2b-256 f0d0efdf52ab5d35fa48e5c447261c0cb5044475d45b9758da26b26904a4047c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page