Skip to main content

Extended Cognito integration with Flask

Project description

Flask-Cognito-Extended

Build Status codecov License: MIT

Flask-Cognito-Extended is a Flask implementation of Amazon Cognito. This extension helps quickly implement authentication and authorization solutions based on Amazon's Cognito. It contains helpful functions and properties to handle token based authentication flows.

pip install Flask-Cognito-Extended

Usage

from flask import Flask, jsonify
from flask_cognito_extended import (
    CognitoManager, login_handler,
    callback_handler, get_jwt_identity
)

app = Flask(__name__)

# Setup the flask-cognito-extended extention
app.config['COGNITO_SCOPE'] = "aws.cognito.signin.user.admin+email+openid+profile"
app.config['COGNITO_REGION'] = "us-east-1"
app.config['COGNITO_USER_POOL_ID'] = "us-east-1_xxxxxxx"
app.config['COGNITO_CLIENT_ID'] = "xxxxxxxxxxxxxxxxxxxxxxxxxx"
app.config['COGNITO_CLIENT_SECRET'] = "xxxxxxxxxxxxxxxxxxxxxxxxxx" # optional
app.config['COGNITO_DOMAIN'] = "https://yourdomainhere.com"
app.config['COGNITO_REDIRECT_URI'] = "https://yourdomainhere/callback"

cognito = CognitoManager(app)

# Use @login_handler decorator on your login route
@app.route('/login', methods=['GET'])
@login_handler
def login():
    return jsonify(msg="User already signed in."), 200


# Use @callback_handler decorator on your callback route
@app.route('/callback', methods=['GET'])
@callback_handler
def callback():
    # fetch the unique 'sub' property of the User
    current_user = get_jwt_identity()
    return jsonify(logged_in_as=current_user), 200


if __name__ == '__main__':
    app.run(debug=True)

Development Setup

Using pipenv

pipenv install --dev 

Using virtualenv

python3 -m venv env
source env/bin/activate
pip install -r requirements.txt

Contributing

  1. Fork repo- https://github.com/deejungx/flask-cognito-extended/fork
  2. Create your feature branch - git checkout -b feature/foo
  3. Commit your changes - git commit -am "Added foo"
  4. Push to the branch - git push origin feature/foo
  5. Create a new pull request

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

Flask-Cognito-Extended-0.2.7.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

Flask_Cognito_Extended-0.2.7-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file Flask-Cognito-Extended-0.2.7.tar.gz.

File metadata

  • Download URL: Flask-Cognito-Extended-0.2.7.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.5

File hashes

Hashes for Flask-Cognito-Extended-0.2.7.tar.gz
Algorithm Hash digest
SHA256 97c8ac7f716e12c1fb87ae40654475900001a6cbd3fbd109a8bcbd04169524d7
MD5 7d7a28ba20b10e0c1fb52d2db25bad57
BLAKE2b-256 95fb46eed6ad252c5ac81bd40144495fe49f3a151b10d8e8afe95ee77712c82f

See more details on using hashes here.

File details

Details for the file Flask_Cognito_Extended-0.2.7-py3-none-any.whl.

File metadata

  • Download URL: Flask_Cognito_Extended-0.2.7-py3-none-any.whl
  • Upload date:
  • Size: 19.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.5

File hashes

Hashes for Flask_Cognito_Extended-0.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 482d720e21047c1c7dc018d9089edfbf73f1efbadecae5b517a3a48ef8e0da01
MD5 98736cf61d663a86a04270abd91bcdfb
BLAKE2b-256 cb4ab37ec73727b0081bc0efa98c70efd034786ebddcfab2628bcd7da8d4485e

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