Skip to main content

Dash Cognito Auth

Build + Test PyPI version

Dash Cognito Auth is a simple library using Cognito OAuth to authenticate and view a Dash app.

This Library uses Flask Dance and a modified version of Plotly's own dash auth for authentication.

This Library is heavily inspired by dash-google-oauth created by Lucas Chapin

Installation

$ pip install dash-cognito-auth

Basic Use

Authentication can be added to your Dash application using the CognitoOAuth class, i.e.

from dash import Dash
from flask import Flask
from dash_cognito_auth import CognitoOAuth

server = Flask(__name__)
server.config.update({
  'COGNITO_OAUTH_CLIENT_ID': ...,
  'COGNITO_OAUTH_CLIENT_SECRET': ...,
})

app = Dash(__name__, server=server, url_base_pathname="/")

additional_scopes = [...]
auth = CognitoOAuth(
   app,
   domain='mydomain',
   region='eu-west-1',
   additional_scopes,
   logout_url="/logout"
)

# your Dash app here :)
...

Example

This repository contains a simple Example App that demonstrates how to add Cognito authentication to your Dash app as well as the Login and Logout Flows.

Development

  • Check out the repository
  • Run pip install -r requirements.txt to install the package
  • Run pip install -r requirements-dev.txt to install additional dependencies for running the tests
  • If you want to run the Sample App or the end to end tests, it makes sense to deploy the Cloudformation Template in order to get a functioning User Pool + App Client
  • Run the tests locally
    • Use python -m pytest tests --ignore-glob "*end_to_end*" to exclude the integration / end to end tests that require a Cognito Setup
    • Use python -m pytest tests to run all tests

Integration Tests

There are integration tests against a Cognito User Pool + App Client, if you want to run those - either create a .env file with this content or set the environment variables with the same name.

# Credentials for the user in the user pool
COGNITO_USER_NAME=<username>
COGNITO_EMAIL=<email-that-must-match>
COGNITO_PASSWORD=<password>

# Connection between the app and the user pool
COGNITO_DOMAIN=<just-the-prefix>
COGNITO_REGION=<aws-region-of-the-cognito-userpool>
COGNITO_OAUTH_CLIENT_ID=<app-client-id>
COGNITO_OAUTH_CLIENT_SECRET=<app-client-secret>

Release files for dash-cognito-auth 0.0.5

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

Source distribution (sdist)

Source distribution for dash-cognito-auth 0.0.5
File Size Uploaded
dash_cognito_auth-0.0.5.tar.gz 39.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dash-cognito-auth 0.0.5
File Interpreter ABI Platform
dash_cognito_auth-0.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 47.7 kB

Release files / dash_cognito_auth-0.0.5.tar.gz

Download URL dash_cognito_auth-0.0.5.tar.gz
Size 39.9 kB
Tags Source
SHA-256 checksum
How to use checksums
306e07b25cc4e973b02ff824f22b33a2c4b1e7e20118a231c6e2a6a513e3bda3
BLAKE2b-256 checksum
How to use checksums
3cc854696ff06af9b03c574fa563ce53095c28f09437b767664b9baf7a68f2eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / dash_cognito_auth-0.0.5-py3-none-any.whl

Download URL dash_cognito_auth-0.0.5-py3-none-any.whl
Size 7.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c1a80f1cad39fa961d917e11b9a29f41dd94930ccc858edc3915831f0afa8a93
BLAKE2b-256 checksum
How to use checksums
2d1cf95426d1a61df568f3615fa66642a24e11bcac7eaffc1422a2a7421a8ed8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.0.5 This release

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

1 release file

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