Flask-Cognito
Authenticate users based on AWS Cognito JWT.
Initialization
# configuration
app.config.update({
'COGNITO_REGION': 'eu-central-1',
'COGNITO_USERPOOL_ID': 'eu-central-1c3fea2',
# optional
'COGNITO_APP_CLIENT_ID': 'abcdef123456', # client ID you wish to verify user is authenticated against
'COGNITO_CHECK_TOKEN_EXPIRATION': False, # disable token expiration checking for testing purposes
'COGNITO_JWT_HEADER_NAME': 'X-MyApp-Authorization',
'COGNITO_JWT_HEADER_PREFIX': 'Bearer',
})
# initialize extension
from flask_cognito import CognitoAuth
cogauth = CognitoAuth(app)
@cogauth.identity_handler
def lookup_cognito_user(payload):
"""Look up user in our database from Cognito JWT payload."""
return User.query.filter(User.cognito_username == payload['username']).one_or_none()
Check Authentication
from flask_cognito import cognito_auth_required, current_user, current_cognito_jwt
@route('/api/private')
@cognito_auth_required
def api_private():
# user must have valid cognito access or ID token in header
# (accessToken is recommended - not as much personal information contained inside as with idToken)
return jsonify({
'cognito_username': current_cognito_jwt['username'], # from cognito pool
'user_id': current_user.id, # from your database
})
Restrict access by Cognito Group
from flask_cognito import cognito_auth_required, current_user, current_cognito_jwt
@route('/api/foo')
@cognito_auth_required
@cognito_group_permissions(['admin','developer'])
def api_private():
# user must belongs to "admin" or "developer" groups
return jsonify({
'foo': "bar"
})
Acknowledgements
- Uses cognitojwt at its core.
- Based on flask-jwt.
Metadata
Release files for Flask-Cognito 1.21
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| Flask-Cognito-1.21.tar.gz | 5.0 kB | Without provenance | Details for Flask-Cognito-1.21.tar.gz |
Release files / Flask-Cognito-1.21.tar.gz
| Download URL | Flask-Cognito-1.21.tar.gz |
|---|---|
| Size | 5.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8daf0a7dd8978c089a55b98e681a6ecab276d19c39828079214f6cb72a508fb5
|
|
BLAKE2b-256 checksum How to use checksums |
21df4ef5d89340665d9bfe6206c263efecb1d0ac4c8b43fc8febe428292ade6f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.12.3
|
Security for Flask-Cognito 1.21
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.