python ssologin_django-sso单点登陆的实现

本文详细介绍了如何在Python环境下,使用Django2.0和django-simple-sso-0.14实现单点登录(SSO)服务。首先介绍了环境准备,包括Python3.5和相关库的安装。接着,讲解了服务端(opstest01)的设置,包括配置修改、数据添加和URL路由。然后,阐述了客户端(testsso)的创建和配置,涉及sso相关参数、视图函数和URL路由。最后,进行了简单的测试流程,展示登陆完成后如何返回测试页面并添加sessionid。
摘要由CSDN通过智能技术生成

环境准备

环境规格:

python3.5

django2.0

django-simple-sso-0.14

环境安装:

pip install django-simple-sso-0.14

环境说明:

opstest01为django应用,作为服务端使用,端口8001

testsso为django应用,作为客户端使用,端口8000

单点概念

参考:https://www.cnblogs.com/morethink/p/8047711.html

服务端实现(opstest01)

配置修改:

修改setting.py文件

INSTALLED_APPS中添加'simple_sso.sso_server',

96410c36925ead14df4d91b3ffccf00e.png

执行python manage.py makemigrations, python manage.py migrate

添加表数据

sso_server_consumer表中添加一行数据指定私钥公钥,用于客服端的配置使用

c9414c424eb6d23cd50b3e67327f5f4e.png

编辑urls.py

暴露两个访问地址

1 from django.contrib importadmin

2 from django.urls importpath, include

3 from django.conf.urls importurl

4 from django.contrib.auth.views importLoginView

5

6 #sso

7 from simple_sso.sso_server.server importServer

8 test_server =Server()

9

10 urlpatterns =[

11 path('admin/', admin.site.urls),

12 url('^server/', include(test_server.get_urls())),

13 url(r'^login/$', LoginView.as_view(template_name='admin/login.html'), name="login"),

14 ]

server为服务端认证,获取token,验证地址;login为django系统自带登陆地址作测试用(测试用户通过python manage.py createsuperuser创建)

到处服务端创建完成!

客户端实现

创建django项目testsso做为客户端测试使用

编辑setting.py文件

INSTALLED_APPS中添加'simple_sso.sso_client',

结尾处添加sso相关参数

#sso

SSO_SERVER = 'http://127.0.0.1:8001/server/'

SSO_PUBLIC_KEY = 'public'

SSO_PRIVATE_KEY = 'private'

LOGIN_URL = '/testsso/client/'    #login_required未登陆跳转地址

添加views.py

from django.http importJsonResponse

from django.contrib.auth.decorators importlogin_required

# Create your views here.

@login_required

deftestClientSSO(request):

json_data = {'name': 'nalanxiao', 'id': 0}

return JsonResponse(json_data)

login_require为django系统装饰器,判断登陆状态

testClientSSO为测试页面

编辑urls.py

from django.urls importinclude

from django.conf.urls importurl

from simple_sso.sso_client.client importClient

from django.conf importsettings

from . importviews

test_client =Client(settings.SSO_SERVER, settings.SSO_PUBLIC_KEY, settings.SSO_PRIVATE_KEY)

urlpatterns =[

url(r'^client/', include(test_client.get_urls())),

url(r'test/', views.testClientSSO, name='testSSO'),

]

添加client,test两个访问地址

测试

访问http://127.0.0.1/8000/client/test/页面调整到8001/login/页面

c3758e42d09a23755e21836cb93a081f.png

登陆完成后跳转回test页面:

2e8ba1d3054be16a3f25a9726c181ba1.png

cookie中增加sessionid

7667c25c9e856ca49d1e922a33b4369d.png

觉得有帮助就点亮小星星吧

a67e4cb6c0d0e2ddf189a95611a35245.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值