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 import admin
2 from django.urls import path, include
3 from django.conf.urls import url
4 from django.contrib.auth.views import LoginView
5
6 #sso
7 from simple_sso.sso_server.server import Server
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 import JsonResponse
from django.contrib.auth.decorators import login_required # Create your views here.
@login_required
def testClientSSO(request):
json_data = {'name': 'nalanxiao', 'id': 0}
return JsonResponse(json_data)
login_require为django系统装饰器,判断登陆状态
testClientSSO为测试页面
编辑urls.py
from django.urls import include
from django.conf.urls import url
from simple_sso.sso_client.client import Client
from django.conf import settings
from . import views 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

gihub:https://github.com/Roherolxh/django-sso
觉得有帮助就点亮小星星吧

django-sso单点登陆的实现的更多相关文章
- IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理
1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以“人”为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是整个IM系统都是以长 ...
- session问题总既然(深入理解)&Token问题理解&sso单点登陆理解实现
一.Session使http协议成为有状态协议(浏览器cookie本地这个session,服务器端也有这个session) 1.ajax前端登陆无法保存session,造成无法维持登陆状态(http本 ...
- Lind.DDD.SSO单点登陆组件的使用(原创)
回到目录 一般sso的说明 在Lind.DDD框架里,有对单点登陆的集成,原理就是各个网站去sso网站统一登陆授权,之后在sso网站将登陆的token进行存储,存储方式随你(cache,redis,m ...
- 京东SSO单点登陆实现分析
京东的sso流程: 初始访问状态: cookies: http请求: 1.在首页点击登陆,跳转至passport.360buy.com,给予验证cookie alc(可以试试在提交登陆信息前删除该 ...
- Java电商项目-8.实现SSO单点登陆
目录 创建ashop-sso-web单点登陆系统 用户名唯一性验证 用户注册 用户登陆 获得用户登陆状态 实现安全退出 项目的Github地址 创建ashop-sso-web单点登陆系统 先创建好模块 ...
- springSession框架来实现sso单点登陆
介绍一下springsession这个框架,其实springsession框架默认的是使用redis来实现单点登陆的,但是不支持redis集群,这个框架的特点是无侵入的实现单点登陆,就是说我们之前获取 ...
- 京东商城跨域设置Cookie实现SSO单点登陆过程
可以先看下这边文章:http://blog.chinaunix.net/uid-25508399-id-3431705.html 1.点击首页的登陆按钮跳转到京东的登陆中心https://pass ...
- SSO单点登陆
一句话,就是能让各个不同的域名带回相同的认证信息即可.实现方法,就是把其中一个登陆后,把认证的信息分别保存在不同域名下的 cookie,当在验证是否登陆时,验证 cookie,如果是子域名,这个则直接 ...
- SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析
最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1.jquery ajax跨 ...
- ASP.NET在不同情况下实现单点登陆(SSO)的方法
第一种:同主域但不同子域之间实现单点登陆 Form验证其实是基于身份cookie的验证.客户登陆后,生成一个包含用户身份信息(包含一个ticket)的cookie,这个cookie的名字就是在web. ...
随机推荐
- 【单调队列】bzoj 1407 [HAOI2007]理想的正方形
[题意] 给定一个n*m的矩阵,求所有大小为k*k的正方形中(最大值-最小值)的最小值 [思路] 先横着算出每一行的长度为k的窗口内的最大值,变成一个n*(m-k+1)的矩阵mx 再竖着算出每一列的长 ...
- properties类的基本使用方法
properties类的基本使用方法1.假设有“pp.properties”,内容有 age=22 2.java中用下面方法: Properties props = ...
- spring aop在mvc的controller中加入切面无效
spring aop在mvc的controller中加入切面无效 因为MVC的controller,aop默认使用jdk代理.要使用cglib代理. 在spring-mybatis.xml配置文件中加 ...
- Linux 下 GCC 编译共享库控制导出函数的方法
通过一些实际项目的开发,发现这样一个现象,在 Windows 下可以通过指定 __declspec(dllexport) 定义来控制 DLL(动态链接库)中哪些函数可以导出,暴露给其他程序链接使用,哪 ...
- 《从零开始搭建游戏服务器》Eclipse和Tomcat安装配置
我选择用来进行服务器开发的语言是Java,开发流程更接近于JavaWeb,所以需要先为开发配置一个开发环境,需要配置的主要是Eclipse和Tomcat(Web工程的容器或管理工具). 一.资源下载: ...
- T1079 回家 codevs
http://codevs.cn/problem/1079/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver~死坑 题目描述 Description 现在是晚 ...
- 9.Java web—JSP内置对象
容器内置了9大对象,这些对象在jsp页无需实例化,可以直接使用. 分别为request. response .session. application .out. pageContext .confi ...
- BUPT复试专题—Special 数(2017)
题目描述 设一个正整数既是平方数乂是立方数时,称为Special数. 输入 输入包含多组测试数据,笫1行输入测试数据的组数,接下来在后续每行输入n(n<=1000000000) 输出 输出1到n ...
- 转:一个android开发者独立开发社交app全过程
http://www.cnblogs.com/linguanh/p/5683069.html
- C#如何实现挂机锁
首先在主窗体中设置一个子窗体的实例,然后当点击挂机之后,隐藏当前窗体,同时显示子窗体. 把子窗体的背景窗体设置如下属性(主要是背景随便改成一个图片,然后FormBorderStyle改成None, ...