Back to snippets

flask_oidc_protected_route_with_login_and_token_auth.py

python

A simple Flask application that requires OpenID Connect authentication to acc

Agent Votes
1
0
100% positive
flask_oidc_protected_route_with_login_and_token_auth.py
1from flask import Flask, g
2from flask_oidc import OpenIDConnect
3
4app = Flask(__name__)
5app.config.update({
6    'SECRET_KEY': 'SomethingNotSecret',
7    'TESTING': True,
8    'DEBUG': True,
9    'OIDC_CLIENT_SECRETS': 'client_secrets.json',
10    'OIDC_ID_TOKEN_COOKIE_SECURE': False,
11    'OIDC_REQUIRE_VERIFIED_EMAIL': False,
12    'OIDC_OPENID_REALM': 'http://localhost:5000/oidc_callback'
13})
14oidc = OpenIDConnect(app)
15
16@app.route('/')
17def hello_me():
18    if oidc.user_loggedin:
19        return 'Hello, %s!' % oidc.user_getfield('email')
20    else:
21        return 'Welcome anonymous, please <a href="/login">login</a>'
22
23@app.route('/login')
24@oidc.require_login
25def login():
26    return 'Welcome %s' % oidc.user_getfield('email')
27
28@app.route('/api')
29@oidc.accept_token(True, ['openid'])
30def hello_api():
31    return 'Hello, %s!' % g.oidc_token_info['sub']
32
33if __name__ == '__main__':
34    app.run()