环境准备

  环境规格:

    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单点登陆的实现的更多相关文章

  1. IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理

    1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以“人”为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是整个IM系统都是以长 ...

  2. session问题总既然(深入理解)&Token问题理解&sso单点登陆理解实现

    一.Session使http协议成为有状态协议(浏览器cookie本地这个session,服务器端也有这个session) 1.ajax前端登陆无法保存session,造成无法维持登陆状态(http本 ...

  3. Lind.DDD.SSO单点登陆组件的使用(原创)

    回到目录 一般sso的说明 在Lind.DDD框架里,有对单点登陆的集成,原理就是各个网站去sso网站统一登陆授权,之后在sso网站将登陆的token进行存储,存储方式随你(cache,redis,m ...

  4. 京东SSO单点登陆实现分析

    京东的sso流程: 初始访问状态: cookies: http请求:   1.在首页点击登陆,跳转至passport.360buy.com,给予验证cookie alc(可以试试在提交登陆信息前删除该 ...

  5. Java电商项目-8.实现SSO单点登陆

    目录 创建ashop-sso-web单点登陆系统 用户名唯一性验证 用户注册 用户登陆 获得用户登陆状态 实现安全退出 项目的Github地址 创建ashop-sso-web单点登陆系统 先创建好模块 ...

  6. springSession框架来实现sso单点登陆

    介绍一下springsession这个框架,其实springsession框架默认的是使用redis来实现单点登陆的,但是不支持redis集群,这个框架的特点是无侵入的实现单点登陆,就是说我们之前获取 ...

  7. 京东商城跨域设置Cookie实现SSO单点登陆过程

    可以先看下这边文章:http://blog.chinaunix.net/uid-25508399-id-3431705.html   1.点击首页的登陆按钮跳转到京东的登陆中心https://pass ...

  8. SSO单点登陆

    一句话,就是能让各个不同的域名带回相同的认证信息即可.实现方法,就是把其中一个登陆后,把认证的信息分别保存在不同域名下的 cookie,当在验证是否登陆时,验证 cookie,如果是子域名,这个则直接 ...

  9. SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析

    最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1.jquery ajax跨 ...

  10. ASP.NET在不同情况下实现单点登陆(SSO)的方法

    第一种:同主域但不同子域之间实现单点登陆 Form验证其实是基于身份cookie的验证.客户登陆后,生成一个包含用户身份信息(包含一个ticket)的cookie,这个cookie的名字就是在web. ...

随机推荐

  1. 花匠(codevs 3289)

    题目描述 Description 花匠栋栋种了一排花,每株花都有自己的高度.花儿越长越大,也越来越挤.栋栋决定把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希望剩下的花 ...

  2. MongoDB 复制(副本集)学习

    MongoDB 复制(副本集)学习 replication set复制集,复制集,多台服务器维护相同的数据副本,提高服务器的可用性.MongoDB复制是将数据同步在多个服务器的过程.复制提供了数据的冗 ...

  3. 解决本地调用office组件成功,但是发布到IIS中出现的错误(检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失败)

    在C#操作word或者Excel,我们可能会用到微软内置的COM组件,会出现很多问题. 如:在本地调试导出Excel没有问题,发布到IIS就有问题了,检测到的异常: 我们会发现在iis上运行的程序,没 ...

  4. 4.JAVA语言基础部分—枚举与泛型

    枚举 //定义枚举 enum MyEnum{ ITEM_A, ITEM_B } public static void main(String[] args) { //values()获取所枚举项的集合 ...

  5. java 使用POI读取excel数据

    原文:http://doc.okbase.net/0201zcr/archive/161440.html 一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Ja ...

  6. wc递归统计代码行数

    find /path -name '*.cpp' |xargs wc -l

  7. 查询公司外网ip方法

    curl -s "http://checkip.dyndns.org/"|cut -f 6 -d" "|cut -f 1 -d"<" ...

  8. pandas入门指南

    上一篇讲了numpy,除此之外,还有一个工具我们一定会使用,那就是pandas.如果说numpy中数据存储形式是列表的话,那么pandas中数据的存储形式更像是字典.为什么这么说呢?因为pandas中 ...

  9. linux shell操作

    ---------------------------------------------------- 原文:http://unix.stackexchange.com/questions/2863 ...

  10. MBProgressHUD 显示方向异常

    一直在iphone上使用MBProgressHUD做提示信息视图.一直都没有什么问题,但用在ipad上使用时.却有时会出现显示方向不正常.如ipad屏幕是横的,但当MBProgressHUD出现时却依 ...