python ssologin_django-sso单点登陆的实现
环境准备
环境规格:
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',
执行python manage.py makemigrations, python manage.py migrate
添加表数据
sso_server_consumer表中添加一行数据指定私钥公钥,用于客服端的配置使用
编辑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/页面
登陆完成后跳转回test页面:
cookie中增加sessionid
觉得有帮助就点亮小星星吧
python ssologin_django-sso单点登陆的实现相关推荐
- IM开发基础知识补课(一):正确理解前置HTTP SSO单点登陆接口的原理
1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以"人"为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是 ...
- IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理
1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以"人"为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是 ...
- 京东SSO单点登陆实现分析
京东的sso流程: 初始访问状态: cookies: http请求: 1.在首页点击登陆,跳转至passport.360buy.com,给予验证cookie alc(可以试试在提交登陆信息前删除该co ...
- Lind.DDD.SSO单点登陆组件的使用(原创)
回到目录 一般sso的说明 在Lind.DDD框架里,有对单点登陆的集成,原理就是各个网站去sso网站统一登陆授权,之后在sso网站将登陆的token进行存储,存储方式随你(cache,redis,m ...
- 开源sso单点登陆系统推荐
一.CAS 地址https://www.apereo.org/projects/cas CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协 ...
- sso单点登陆实现过程汇总记录
前言 在早期,项目规模不大的时候,企业中存在的系统不多,通常为1或者2个.每个系统都有自己独立的登陆模块,这样用户进行登陆也不是特别麻烦,分别进行登陆就可以了.但是随着企业规模不断变大,随之而然的系统 ...
- 企业内部应用(阿里商旅)集成 钉钉 与 微信 实现SSO单点登陆
1.钉钉准备工作 (1) 创建应用 https://open-dev.dingtalk.com/fe/app#/corp/app (2)获取应用凭证 记录 AgentId AppKey AppSecr ...
- 带你快速了解SSO单点登陆
引入 定义:在多个应用系统中共享登录.撤销状态 这里说的多个应用系统其实指的不同的域 同源(同一个域):域名.端口.协议均相同 举例:淘宝(www.taobao.com)和天猫(www.tmall.c ...
- 简单入门SSO单点登陆——认证服务
SSO在我们的应用中非常常见,例如我们在OA系统登录了,我们就可以直接进入采购系统,不需要再登录了,这样使我们非常方便.现在网上也有很多实现方法,于是乎我也想写一个看看.我主要用到的是cookie的机 ...
- Spring Security、oauth2、单点登陆SSO的关系
文章目录 概述 1. 什么是Spring Security 1.1 配置示例 1.2 spring security 基本原理 1.2 Spring Security存在的问题 2. 什么是oauth ...
最新文章
- 如何在Ruby中获得随机数
- mysql的status状态说明
- web项目_学生证管理系统
- PAT甲级1097 Deduplication on a Linked List:[C++题解]遍历链表、两个vector
- 让图片算好高宽再显示
- android 过滤数组中的重复元素,Flutter List数组避免插入重复数据的实现
- SpringMVC @Transactional的陷井大坑引发No Session found for current thread
- linux mount 日志,mount
- 手把手教你如何逐步安装OpenStack
- Webstorm的常用快捷键
- mysql半同步模式_MySQL 半同步复制模式的实现
- tcping下载安装步骤,如何ping端口,tcping详解
- 乐谱五线谱排版软件种类与介绍
- 台式电脑怎么装win10 win11重装win10系统
- ShareX:一款你值得拥有的截图识别工具
- hive大数据量实现分页查询,java结合mybatis及多数据源(hive、MySQL)
- Oracle 序列使用整理
- Proxmox VE技巧
- 推荐算法(8)评测指标
- Windows redis最新版本5.0.9下载
热门文章
- Linux: kill
- spark RDD transformation与action函数整理
- css3 切换贞动画的效果,仿gif效果
- #paragma详解
- 笨办法学Python(learn python the hard way)--练习程序39-40
- Spring 下 MyBatis 的基本使用
- linux服务器MySQL数据从磁盘拷贝以及恢复
- java基础 第四章 下(数组)
- 接口测试基础——第6篇unittest模块(三)
- [Python] Different ways to test multiple flags at once in Python