django-oidc-provider/oidc_provider/settings.py

143 lines
3.8 KiB
Python
Raw Normal View History

import importlib
from django.conf import settings
2015-03-02 20:37:54 +00:00
2015-03-04 20:17:37 +00:00
class DefaultSettings(object):
2016-05-25 21:58:58 +00:00
required_attrs = (
'LOGIN_URL',
)
2015-03-04 20:17:37 +00:00
@property
def LOGIN_URL(self):
"""
2015-07-14 16:01:29 +00:00
REQUIRED. Used to log the user in.
2015-03-04 20:17:37 +00:00
"""
return None
2015-03-02 20:37:54 +00:00
2015-03-04 20:17:37 +00:00
@property
def SITE_URL(self):
"""
2016-05-25 21:58:58 +00:00
OPTIONAL. The OP server url.
2015-03-04 20:17:37 +00:00
"""
return None
2015-03-02 20:37:54 +00:00
2015-03-19 17:04:32 +00:00
@property
def OIDC_AFTER_USERLOGIN_HOOK(self):
"""
2015-07-14 16:01:29 +00:00
OPTIONAL. Provide a way to plug into the process after
the user has logged in, typically to perform some business logic.
2015-03-19 17:04:32 +00:00
"""
return 'oidc_provider.lib.utils.common.default_after_userlogin_hook'
2015-03-19 17:04:32 +00:00
2015-03-04 20:17:37 +00:00
@property
def OIDC_CODE_EXPIRE(self):
"""
2015-07-14 16:01:29 +00:00
OPTIONAL. Code expiration time expressed in seconds.
2015-03-04 20:17:37 +00:00
"""
return 60*10
2015-02-26 19:14:36 +00:00
2015-03-04 20:17:37 +00:00
@property
def OIDC_EXTRA_SCOPE_CLAIMS(self):
"""
2015-07-14 16:01:29 +00:00
OPTIONAL. A string with the location of your class.
2016-07-07 15:50:27 +00:00
Used to add extra scopes specific for your app.
2015-03-04 20:17:37 +00:00
"""
2016-07-07 15:50:27 +00:00
return None
2015-03-04 20:17:37 +00:00
@property
def OIDC_IDTOKEN_EXPIRE(self):
"""
2015-07-14 16:01:29 +00:00
OPTIONAL. Id token expiration time expressed in seconds.
2015-03-04 20:17:37 +00:00
"""
return 60*10
@property
def OIDC_IDTOKEN_SUB_GENERATOR(self):
"""
2015-07-14 16:01:29 +00:00
OPTIONAL. Subject Identifier. A locally unique and never
reassigned identifier within the Issuer for the End-User,
which is intended to be consumed by the Client.
2015-03-04 20:17:37 +00:00
"""
return 'oidc_provider.lib.utils.common.default_sub_generator'
2015-03-04 20:17:37 +00:00
2016-02-01 17:34:39 +00:00
@property
def OIDC_SKIP_CONSENT_ALWAYS(self):
"""
OPTIONAL. If enabled, the Server will NEVER ask the user for consent.
"""
return False
2015-03-04 20:17:37 +00:00
@property
2015-06-24 15:40:00 +00:00
def OIDC_SKIP_CONSENT_ENABLE(self):
2015-03-04 20:17:37 +00:00
"""
2015-07-14 16:01:29 +00:00
OPTIONAL. If enabled, the Server will save the user consent
given to a specific client, so that user won't be prompted for
the same authorization multiple times.
2015-03-04 20:17:37 +00:00
"""
2015-06-24 15:40:00 +00:00
return True
2015-06-22 21:41:42 +00:00
@property
2015-06-24 15:40:00 +00:00
def OIDC_SKIP_CONSENT_EXPIRE(self):
2015-06-22 21:41:42 +00:00
"""
2015-07-14 16:01:29 +00:00
OPTIONAL. User consent expiration after been granted.
2015-06-22 21:41:42 +00:00
"""
2015-06-24 15:40:00 +00:00
return 30*3
2015-06-22 21:41:42 +00:00
@property
2015-06-24 15:40:00 +00:00
def OIDC_TOKEN_EXPIRE(self):
2015-06-22 21:41:42 +00:00
"""
2015-07-14 16:01:29 +00:00
OPTIONAL. Token object expiration after been created.
Expressed in seconds.
2015-06-22 21:41:42 +00:00
"""
2015-06-24 15:40:00 +00:00
return 60*60
2015-08-11 18:58:52 +00:00
@property
def OIDC_USERINFO(self):
"""
2016-07-07 15:50:27 +00:00
OPTIONAL. A string with the location of your function.
Used to populate standard claims with your user information.
2015-08-11 18:58:52 +00:00
"""
2016-07-07 15:50:27 +00:00
return 'oidc_provider.lib.utils.common.default_userinfo'
2015-08-11 18:58:52 +00:00
@property
2016-02-12 17:51:43 +00:00
def OIDC_IDTOKEN_PROCESSING_HOOK(self):
"""
OPTIONAL. A string with the location of your hook.
Used to add extra dictionary values specific for your app into id_token.
"""
2016-02-12 17:51:43 +00:00
return 'oidc_provider.lib.utils.common.default_idtoken_processing_hook'
2015-03-06 15:55:50 +00:00
default_settings = DefaultSettings()
2015-03-02 20:37:54 +00:00
def import_from_str(value):
"""
Attempt to import a class from a string representation.
"""
try:
parts = value.split('.')
module_path, class_name = '.'.join(parts[:-1]), parts[-1]
module = importlib.import_module(module_path)
return getattr(module, class_name)
except ImportError as e:
msg = 'Could not import %s for settings. %s: %s.' % (value, e.__class__.__name__, e)
raise ImportError(msg)
def get(name, import_str=False):
"""
2015-03-02 20:37:54 +00:00
Helper function to use inside the package.
"""
value = None
2015-03-02 20:37:54 +00:00
try:
2015-03-06 15:55:50 +00:00
value = getattr(default_settings, name)
2015-03-02 20:37:54 +00:00
value = getattr(settings, name)
except AttributeError:
2016-05-25 22:21:27 +00:00
if value is None and name in default_settings.required_attrs:
2015-03-02 20:37:54 +00:00
raise Exception('You must set ' + name + ' in your settings.')
value = import_from_str(value) if import_str else value
return value