{"id":44972,"library":"flask-cognito","title":"Flask-Cognito","description":"Flask extension for authenticating users to AWS Cognito user pools using JWT tokens. Version 1.21 is current; release cadence is irregular.","status":"active","version":"1.21","language":"python","source_language":"en","source_url":"https://github.com/jetbridge/flask_cognito","tags":["flask","cognito","aws","jwt","authentication"],"install":[{"cmd":"pip install flask-cognito","lang":"bash","label":"PyPI"}],"dependencies":[{"reason":"Core dependency: Flask web framework.","package":"Flask","optional":false},{"reason":"JWT decoding and verification.","package":"PyJWT","optional":false},{"reason":"Required for RS256 signature verification.","package":"cryptography","optional":false}],"imports":[{"note":"Old import path or mistaken module name.","wrong":"from flask_cognito import cognito","symbol":"CognitoAuth","correct":"from flask_cognito import CognitoAuth"},{"note":"Function is exposed at package level.","wrong":"from flask_cognito.auth import cognito_auth_required","symbol":"cognito_auth_required","correct":"from flask_cognito import cognito_auth_required"},{"note":"Use the provided object, not Flask's g for JWT payload.","wrong":"from flask import g","symbol":"current_cognito_jwt","correct":"from flask_cognito import current_cognito_jwt"}],"quickstart":{"code":"import os\nfrom flask import Flask\nfrom flask_cognito import CognitoAuth, cognito_auth_required\n\napp = Flask(__name__)\napp.config['AWS_DEFAULT_REGION'] = os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')\napp.config['AWS_COGNITO_DOMAIN'] = os.environ.get('AWS_COGNITO_DOMAIN', 'https://your-domain.auth.us-east-1.amazoncognito.com')\napp.config['AWS_COGNITO_USER_POOL_ID'] = os.environ.get('AWS_COGNITO_USER_POOL_ID', '')\napp.config['AWS_COGNITO_CLIENT_ID'] = os.environ.get('AWS_COGNITO_CLIENT_ID', '')\n\ncogauth = CognitoAuth(app)\n\n@app.route('/protected')\n@cognito_auth_required\ndef protected():\n    return 'Hello, user!'\n\nif __name__ == '__main__':\n    app.run()","lang":"python","description":"Initialize CognitoAuth with Flask app config (region, domain, pool ID, client ID) and protect routes with @cognito_auth_required."},"warnings":[{"fix":"Ensure PyJWT >=2.0 and cryptography are installed.","message":"Flask-Cognito 1.x uses PyJWT 2.x; older versions of PyJWT may cause signature verification failures.","severity":"breaking","affected_versions":">=1.0"},{"fix":"Set app.config['AWS_COGNITO_DOMAIN'] = 'https://your-domain.auth.region.amazoncognito.com'","message":"The AWS_COGNITO_DOMAIN must include the https:// prefix, otherwise token retrieval fails.","severity":"gotcha","affected_versions":"all"},{"fix":"Configure your Cognito User Pool to use RS256 signing.","message":"Flask-Cognito only supports RS256 JWTs; HS256 or other algorithms will cause decode errors.","severity":"gotcha","affected_versions":"all"},{"fix":"For group checks, use cognito_group_check decorator with allowed_groups parameter.","message":"The 'cognito_auth_required' decorator does not accept arguments; use separate decorators for group-based access (e.g. '@cognito_group_check') if needed.","severity":"deprecated","affected_versions":"all"},{"fix":"Set config values before calling CognitoAuth(app).","message":"CognitoAuth must be initialized after all app config is set; else config defaults are missed.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'1.21':18 'authent':7,29 'aw':10,27 'cadenc':22 'cognito':3,11,26 'current':20 'extens':5 'flask':2,4,25 'flask-cognito':1 'irregular':24 'jwt':15,28 'pool':13 'releas':21 'token':16 'use':14 'user':8,12 'version':17","created_at":"2026-06-07T12:52:44.446050+00:00","updated_at":"2026-06-07T12:52:44.446050+00:00","problems":[{"fix":"Run 'pip install --upgrade flask-cognito' and use 'from flask_cognito import CognitoAuth'.","cause":"Incorrect import or outdated library version.","error":"AttributeError: module 'flask_cognito' has no attribute 'CognitoAuth'"},{"fix":"Install PyJWT>=2.0, cryptography; ensure Cognito app client is configured for RS256.","cause":"PyJWT version mismatch or wrong public key fetched; or algorithm not RS256.","error":"jwt.exceptions.InvalidKeyError: Signature verification failed"},{"fix":"Ensure route function is within Flask app context; do not call current_cognito_jwt outside request.","cause":"Using decorator outside of request context; or no app set up.","error":"Flask-Cognito requires app context"},{"fix":"Set all required config: AWS_DEFAULT_REGION, AWS_COGNITO_DOMAIN, AWS_COGNITO_USER_POOL_ID, AWS_COGNITO_CLIENT_ID.","cause":"Missing configuration variables.","error":"KeyError: 'AWS_COGNITO_DOMAIN'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/jetbridge/flask_cognito","github":"https://github.com/jetbridge/flask_cognito","docs":null,"changelog":null,"pypi":null,"npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["security"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-29","last_verified":"2026-06-29","next_check":"2026-07-29","install_tag":null}}