|
1 | 1 | """Python Flask WebApp Auth0 integration example |
2 | 2 | """ |
| 3 | +from functools import wraps |
| 4 | +import json |
3 | 5 | from os import environ as env |
4 | | -from jose import jwt |
| 6 | + |
5 | 7 | from dotenv import load_dotenv, find_dotenv |
6 | | -from six.moves.urllib.request import urlopen |
7 | 8 | from flask import Flask |
| 9 | +from flask import jsonify |
| 10 | +from flask import redirect |
8 | 11 | from flask import render_template |
9 | 12 | from flask import request |
10 | 13 | from flask import session |
11 | | -from flask import redirect |
12 | | -from flask import jsonify |
| 14 | +from flask import url_for |
13 | 15 | from flask_oauthlib.client import OAuth |
14 | | -from functools import wraps |
| 16 | +from jose import jwt |
15 | 17 | from six.moves.urllib.parse import urlencode |
16 | | -from flask import url_for |
17 | | -import json |
| 18 | +from six.moves.urllib.request import urlopen |
18 | 19 |
|
19 | 20 | import constants |
20 | 21 |
|
|
26 | 27 | AUTH0_CLIENT_ID = env.get(constants.AUTH0_CLIENT_ID) |
27 | 28 | AUTH0_CLIENT_SECRET = env.get(constants.AUTH0_CLIENT_SECRET) |
28 | 29 | AUTH0_DOMAIN = env.get(constants.AUTH0_DOMAIN) |
29 | | -AUTH0_AUDIENCE = env.get(constants.AUTH0_AUDIENCE) |
| 30 | +AUTH0_AUDIENCE = env.get(constants.API_ID) |
30 | 31 |
|
31 | 32 | APP = Flask(__name__, static_url_path='/public', static_folder='./public') |
32 | 33 | APP.secret_key = constants.SECRET_KEY |
@@ -83,13 +84,15 @@ def home(): |
83 | 84 | def callback_handling(): |
84 | 85 | resp = auth0.authorized_response() |
85 | 86 | if resp is None: |
86 | | - raise AuthError({'code': request.args['error'], 'description': request.args['error_description']}, 401) |
| 87 | + raise AuthError({'code': request.args['error'], |
| 88 | + 'description': request.args['error_description']}, 401) |
87 | 89 |
|
88 | 90 | # Obtain JWT and the keys to validate the signature |
89 | | - idToken = resp['id_token'] |
| 91 | + id_token = resp['id_token'] |
90 | 92 | jwks = urlopen("https://"+AUTH0_DOMAIN+"/.well-known/jwks.json") |
91 | 93 |
|
92 | | - payload = jwt.decode(idToken, jwks.read(), algorithms=['RS256'], audience=AUTH0_CLIENT_ID, issuer="https://"+AUTH0_DOMAIN+"/") |
| 94 | + payload = jwt.decode(id_token, jwks.read(), algorithms=['RS256'], |
| 95 | + audience=AUTH0_CLIENT_ID, issuer="https://"+AUTH0_DOMAIN+"/") |
93 | 96 |
|
94 | 97 | session[constants.JWT_PAYLOAD] = payload |
95 | 98 |
|
|
0 commit comments