kleidesdssoclient 0.9
Discourse Single-Sign-on (DSSO) provider client to connect your
Django project to a Discourse Single-Sign-On provider server.
See: https://meta.discourse.org/t/official-single-sign-on-for-discourse-sso/
Example usage:
Add kleides_dssoclient to INSTALLED_APPS.
Create a custom DssoLoginBackend, for example:
from kleides_dssoclient.backends import DssoLoginBackend
class MyProjectDssoLoginBackend(DssoLoginBackend):
"""
DssoLoginBackend that rejects anyone without is_superuser, and that
sets all mapped variables on the newly created User object.
"""
def authenticate(self, dsso_mapping):
"""
Check that user is a superuser and pass along to DssoLoginBackend.
"""
if dsso_mapping.get('is_superuser') not in ('True', 'true', '1'):
return None
return super(MyProjectDssoLoginBackend, self).authenticate(
dsso_mapping)
def configure_user(self, user, dsso_mapping):
"""
We expect username, email, is_superuser in the dsso_mapping.
"""
user = (
super(MyProjectDssoLoginBackend, self)
.configure_user(user, dsso_mapping))
user.email = dsso_mapping.get('email', '')
is_superuser = (
dsso_mapping.get('is_superuser') in ('True', 'true', '1'))
user.is_staff = is_superuser
user.is_superuser = is_superuser
user.save()
return user
Add this to the Django settings:
AUTHENTICATION_BACKENDS = ( # the only backend needed
'myproject.backends.MyProjectDssoLoginBackend',
)
MIDDLEWARE_CLASSES += (
'kleides_dssoclient.middleware.DssoLoginMiddleware',
)
KLEIDES_DSSO_ENDPOINT = 'https://DSSOSERVER/sso/'
KLEIDES_DSSO_SHARED_KEY = 'oh-sso-very-very-secret'
KLEIDES_DSSO_CREATE_UNKNOWN_USER = True
Changes
v0.9 - 2024-06-13
Add setting for automatic user creation.
Remove dsso parameters from the return url.
v0.8 - 2020-09-28
Allow using the Dsso backend as a mixin.
v0.7 - 2019-07-16
Allow bypassing the middleware by setting KLEIDES_DSSO_ENDPOINT to None.
v0.6 - 2019-03-06
Add request arg to DssoLoginBackend for Django 2.1.
v0.5 - 2019-03-06
Add logging to help investigate problems.
v0.3 - 2018-12-18
Add support for Django 1.10 style middleware.
Check Django version for is_authenticated usage.
v0.2 - 2018-11-19
Replace sso_mapping with dsso_mapping in authenticate argument list.
v0.1 - 2018-11-16
Initial release.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.