Django的Dresses话语SSO客户端
kleides-dssoclient的Python项目详细描述
话语单点登录(dsso)提供程序客户端 django项目到discussion单一登录提供程序服务器。
见:https://meta.discourse.org/t/official-single-sign-on-for-discourse-sso/
示例用法:
将kleides_dssoclient添加到INSTALLED_APPS。
创建自定义DssoLoginBackend,例如:
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
将此项添加到djangosettings:
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'
更改
V0.7-2019-07-16
- 允许通过将kleides_dsso_endpoint设置为none来绕过中间件。
V0.6-2019-03-06
- 为django 2.1添加requestarg到DssoLoginBackend
V0.5-2019-03-06
- 添加日志以帮助调查问题。
v0.3-2018-12-18
- 添加对django 1.10风格中间件的支持。
- 检查Django版本是否有经过身份验证的用法。
v0.2-2018-11-19
- 在authenticate参数列表中将sso_mapping替换为dsso_mapping。
v0.1-2018-11-16
- 初次发布。