Skip to main content

Flask OpenID with flask-login

Project description

flask-login-saml

Flask OpenID with flask-login

Installation

pip install flask-login-oidc

Setup

  • Base login configuration
import flask

from flask_login import LoginManager, login_required, current_user
from flask_login_oidc import FlaskOIDC

app = flask.Flask('flask')
oidc = FlaskOIDC()


def redirect_login():
    return flask.redirect(flask.url_for('oidc.login'))


@app.route('/oidc/login/', endpoint='oidc.login', methods=['GET'])
def login():
    return oidc.login()


@app.route('/oidc/authorize/', endpoint='oidc.authorize', methods=['GET'])
def authorize():
    return oidc.authorize()


@app.route('/oidc/logout/', endpoint='oidc.logout', methods=['GET'])
@login_required
def logout():
    return oidc.logout()


@app.route('/', methods=['GET'])
@login_required
def index():
    return current_user.email


if __name__ == '__main__':
    lm = LoginManager(app)
    lm.unauthorized_handler(redirect_login)
    lm.user_loader(oidc.user)
    app.config['OIDC_CLIENT_SECRETS'] = 'secrets.json'
    app.config['OIDC_OPENID_REALM'] = 'realm'
    app.config['SECRET_KEY'] = 'secret'
    app.config['SESSION_TYPE'] = 'filesystem'
    oidc.init_app(app)
    app.run()
  • Custom login configuration
import flask

from flask_login import LoginManager, login_required, current_user
from flask_login_oidc import FlaskOIDC

app = flask.Flask('flask')
oidc = FlaskOIDC(prefix='SSO')


def redirect_login():
    return flask.redirect(flask.url_for('sso.login'))


@app.route('/sso/login/', endpoint='sso.login', methods=['GET'])
def login():
    return oidc.login()


@app.route('/sso/authorize/', endpoint='sso.authorize', methods=['GET'])
def authorize():
    return oidc.authorize()


@app.route('/sso/logout/', endpoint='sso.logout', methods=['GET'])
@login_required
def logout():
    return oidc.logout()


@app.route('/', methods=['GET'])
@login_required
def index():
    return current_user.email


if __name__ == '__main__':
    lm = LoginManager(app)
    lm.unauthorized_handler(redirect_login)
    lm.user_loader(oidc.user)
    app.config['SSO_CLIENT_SECRETS'] = 'secrets.json'
    app.config['SSO_OPENID_REALM'] = 'realm'
    app.config['SECRET_KEY'] = 'secret'
    app.config['SESSION_TYPE'] = 'filesystem'
    oidc.init_app(app)
    app.run()

Using custom user model

Must be used after FlaskOIDC.init_app() or FlaskOIDC() if you are not using it

oidc.user_model(UserModel)

See user.py for more information about user model

Custom login

Must be used after FlaskOIDC.init_app() or FlaskOIDC() if you are not using it

def login(oidc_auth, model,  token):
    """
    
    :param oidc_auth: oauth client
    :type oidc_auth: OAuth2Mixin
    :param model: user model
    :param token: user's oauth token
    :return: 
    """
    pass

oidc.login_user(login)

Custom logout

Must be used after FlaskOIDC.init_app() or FlaskOIDC() if you are not using it

def logout(oidc_auth):
    """
    
    :param oidc_auth: auth client
    :type oidc_auth: OAuth2Mixin
    :return: 
    """
    pass

oidc.logout_user(logout)

Custom client

Must be used after FlaskOIDC.init_app() or FlaskOIDC() if you are not using it

def client(prefix):
    """

    :param prefix:
    :type prefix: str
    :return:
    :rtype: OAuth2Mixin
    """
    pass

oidc.client(client)

Custom secret load

Must be used after FlaskOIDC.init_app() or FlaskOIDC() if you are not using it

def secret(app, prefix):
    """

    :param app:
    :type app: flask.Flask
    :param prefix:
    :type prefix:str
    :return:
    :rtype: dict
    """
    pass

oidc.secret(secret)

Enjoy

LICENSE

See License file

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_login_oidc-1.0.0.tar.gz (44.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flask_login_oidc-1.0.0-py3-none-any.whl (31.7 kB view details)

Uploaded Python 3

File details

Details for the file flask_login_oidc-1.0.0.tar.gz.

File metadata

  • Download URL: flask_login_oidc-1.0.0.tar.gz
  • Upload date:
  • Size: 44.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for flask_login_oidc-1.0.0.tar.gz
Algorithm Hash digest
SHA256 9f6cde65b523196b0c04794b0f97e126bff0b4272c262d6a375429f5f6ea4320
MD5 a14d11864e94868b77ac3e09011dae00
BLAKE2b-256 6f37ef7679e1ca51a71bd73a193244e77f62f319e6cbd504029ec98f4ffcaf04

See more details on using hashes here.

File details

Details for the file flask_login_oidc-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for flask_login_oidc-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 208b42ce62329e1f09397eb6cbcdd53b97d3840a12f4100f4e489f875575ef08
MD5 44670ab1e759bb417098567c04a41102
BLAKE2b-256 7b8a9ca42d5cb428b01da8a6ad93e57f75b5f5578c60f67e17a312e337c017de

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page