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 hexadecimal 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.44.3.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

allowedflare-2024.44.3-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for allowedflare-2024.44.3.tar.gz
Algorithm Hash digest
SHA256 5c02060330ea574374c9c63be3667ff34aecf994576fd6e5eca95f2af8909e52
MD5 194a85b2aa2a1fe952f2437e4ff1217d
BLAKE2b-256 4a18dab09cba5764e40a9dbf7c4deb618f042ff36f2af105508b91ce9b79bf42

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for allowedflare-2024.44.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9f628bf5b245efe9955913c22d386b122a724551d9b813588bb67e1eeaa786a1
MD5 49b533b725e58cc8ad7efa4c1f5ad8c7
BLAKE2b-256 74185b071d29478927a2734b24b405ca03d3c1e83230620c9525ed217a73a853

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