可重复使用的django应用程序,方便gov.uk员工单点登录

django-staff-sso-client的Python项目详细描述


Django Staff SSO客户端

CircleCIcodecovPyPIPyPI - Python VersionPyPI - Django Version

用于staff-sso

的django客户端

要求

Python 3.6Django>=1.11

安装

pip install django-staff-sso-client

配置

将以下内容添加到您的设置文件中:

INSTALLED_APPS=[
    [...]
    'authbroker_client',
]
# authbroker config
AUTHBROKER_URL = 'speak-to-webops-team-for-access'
AUTHBROKER_CLIENT_ID = 'speak-to-webops-team-for-access'
AUTHBROKER_CLIENT_SECRET = 'speak-to-webops-team-for-access'

添加'authbroker_client.backends.AuthbrokerBackend'身份验证后端,例如:

AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
    'authbroker_client.backends.AuthbrokerBackend',
]

添加登录URL(必须是'/auth/login')

LOGIN_URL = reverse_lazy('authbroker:login')

添加登录重定向URL,例如

LOGIN_REDIRECT_URL = reverse_lazy('home_page')

最后,将其添加到主文件urls.py中:

path('auth/', include('authbroker_client.urls'))

或者,如果您使用的是django<;2:

url('^auth/', include('authbroker_client.urls', namespace='authbroker', app_name='authbroker_client'))

现在应该有一个/auth/login/url,它引导用户通过staff-sso登录流。一旦用户 通过staff-sso(并选择标识提供程序)进行身份验证,它们将被重定向回您的应用程序。 然后,具有匹配电子邮件地址的本地django用户将登录。如果用户条目被创建 数据库中尚未存在。

一旦通过身份验证,用户将被重定向到settings.LOGIN_REDIRECT_URL

使用django @login_required装饰器来保护单个视图,或者如果要保护所有视图,请使用此中间件:

MIDDLEWARE = [
    [...]
    'authbroker_client.middleware.ProtectAllViewsMiddleware',
]

如果您确实希望在应用程序中使用管理界面,则在使用此模块时,还需要安装并配置custom_usermodel

待办事项:

  • 请确保在宽限期(例如1分钟)后与staff-sso进行has_valid廑token()检查
  • 改进authbroker_client/views.py
  • 中的异常处理逻辑

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将元素从一个ArrayList添加到另一个ArrayList?   oop java中的setter和getter有什么意义?   java如何在循环中添加用户输入?   java在没有maven jetty的情况下从命令行运行war   数组@override to。字符串仅打印出默认构造函数java hw   java获取mysql中两天之间的天数名称   java如何使用属性值从一个方法到另一个方法   java如何在MULE中进入流程中间,并将消息返回给客户端。。?   java有没有办法将EncryptedSharedReference与PreferenceScreen集成?   java在shell脚本中嵌入可执行二进制文件   “TypeError:form.set不是函数”Java无法访问FormData的函数   java扫描器。下一行输入与字符串不匹配   java正在将数组初始化为null,但null比较失败   java不支持线程。sleep()是否防止堆栈溢出错误?   java重用SQLite连接还是每次重新连接?   Spring安全中Web忽略和Http允许之间的java差异?   从Java到JSON的转换   java如何在关闭应用程序后停止意向服务   javalibgdx:如何从core访问xml文件?