Module control.authoidc
Expand source code Browse git
from flask_oidc import OpenIDConnect
import json
def json_loads(content):
"""Handles loading of json content as unicode strings.
"""
if not isinstance(content, str):
content = content.decode('utf-8')
return json.loads(content)
class AuthOidc:
"""Invoke the OIDC authentication.
Here the Pure3D app is configured to work with the CLARIAH authentication provider.
For that we use the Python module
[flask-oidc](https://github.com/puiterwijk/flask-oidc).
"""
OIDC_CLIENT_SECRETS = "/app/secret/client_secrets.json"
@classmethod
def load_secrets(cls):
"""Reads secrets used in encryption and decryption.
"""
return json_loads(open(cls.OIDC_CLIENT_SECRETS, 'r').read())
@classmethod
def prepare(cls, app):
"""Injects the OIDC module into the main app.
"""
authconf = {
# 'SECRET_KEY': app.secret_key,
'TESTING': True,
'DEBUG': True,
'OIDC_CLIENT_SECRETS': cls.OIDC_CLIENT_SECRETS,
# 'OIDC_USER_INFO_ENABLED': True,
'OIDC_ID_TOKEN_COOKIE_SECURE': False,
# 'OIDC_REQUIRE_VERIFIED_EMAIL': False,
# 'OIDC_OPENID_REALM': 'auth realm',
# 'OVERWRITE_REDIRECT_URI': OpenIDConnect.client_secrets.get("redirect_uris"),
}
secrets = cls.load_secrets()
client_secrets = list(secrets.values())[0]
# check and set custom redirect
custom_redirect = client_secrets.get("custom_redirect", None)
if custom_redirect:
authconf["OVERWRITE_REDIRECT_URI"] = custom_redirect
# check and set custom scopes
custom_scopes = client_secrets.get("custom_scopes", None)
if custom_scopes:
authconf["OIDC_SCOPES"] = custom_scopes
app.config.update(authconf)
return OpenIDConnect(app)
Functions
def json_loads(content)
-
Handles loading of json content as unicode strings.
Classes
class AuthOidc
-
Invoke the OIDC authentication.
Here the Pure3D app is configured to work with the CLARIAH authentication provider.
For that we use the Python module flask-oidc.
Expand source code Browse git
class AuthOidc: """Invoke the OIDC authentication. Here the Pure3D app is configured to work with the CLARIAH authentication provider. For that we use the Python module [flask-oidc](https://github.com/puiterwijk/flask-oidc). """ OIDC_CLIENT_SECRETS = "/app/secret/client_secrets.json" @classmethod def load_secrets(cls): """Reads secrets used in encryption and decryption. """ return json_loads(open(cls.OIDC_CLIENT_SECRETS, 'r').read()) @classmethod def prepare(cls, app): """Injects the OIDC module into the main app. """ authconf = { # 'SECRET_KEY': app.secret_key, 'TESTING': True, 'DEBUG': True, 'OIDC_CLIENT_SECRETS': cls.OIDC_CLIENT_SECRETS, # 'OIDC_USER_INFO_ENABLED': True, 'OIDC_ID_TOKEN_COOKIE_SECURE': False, # 'OIDC_REQUIRE_VERIFIED_EMAIL': False, # 'OIDC_OPENID_REALM': 'auth realm', # 'OVERWRITE_REDIRECT_URI': OpenIDConnect.client_secrets.get("redirect_uris"), } secrets = cls.load_secrets() client_secrets = list(secrets.values())[0] # check and set custom redirect custom_redirect = client_secrets.get("custom_redirect", None) if custom_redirect: authconf["OVERWRITE_REDIRECT_URI"] = custom_redirect # check and set custom scopes custom_scopes = client_secrets.get("custom_scopes", None) if custom_scopes: authconf["OIDC_SCOPES"] = custom_scopes app.config.update(authconf) return OpenIDConnect(app)
Class variables
var OIDC_CLIENT_SECRETS
-
The type of the None singleton.
Static methods
def load_secrets()
-
Reads secrets used in encryption and decryption.
def prepare(app)
-
Injects the OIDC module into the main app.