kleides-dssoclient 0.9

Creator: codyrutscher

Last updated:

Add to Cart

Description:

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.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.