1.

什么是单点登录?

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

客户端持有ID,服务端持有session,两者一起用来保持登录状态。客户端需要用ID来作为凭证,而服务端需要用session来验证ID的有效性(ID可能过期、可能根本就是伪造的找不到对于的信息、ID下对应的客户端还没有进行登录验证等)。但是session这东西一开始是每个server自己独有的,豆瓣FM有自己的session、豆瓣读书有自己的session,而记录ID的cookie又是不能跨域的。所以,我们要实现一次登录一次退出,只需要想办法让各个server的共用一个session的信息,让客户端在各个域名下都能持有这个ID就好了。再进一步讲,只要各个server拿到同一个ID,都能有办法检验出ID的有效性、并且能得到ID对应的用户信息就行了,也就是能检验ID。

因此实现单点登录说到底就是要解决如何产生ID和存储那个信任ID,再就是其他系统如何验证这个信任的有效性,因此要点也就以下两个:

存储信任验证信任

以下是我探究所得的方法

2.

单点登录的实现有哪些?

一、以Cookie作为凭证媒介

最简单的单点登录实现方式,是使用cookie作为媒介,存放用户凭证。用户登录父应用之后,应用返回一个加密的cookie,当用户访问子应用的时候,携带上这个cookie,授权应用解密cookie并进行校验,校验通过则登录当前用户。

Auth via cookie

不难发现以上方式把信任存储在客户端的Cookie中,这种方式很容易令人质疑:Cookie不安全不能跨域实现免登对于第一个问题,通过加密Cookie可以保证安全性,当然这是在源代码不泄露的前提下。如果Cookie的加密算法泄露,攻击者通过伪造Cookie则可以伪造特定用户身份,这是很危险的。对于第二个问题,更是硬伤。

二、通过JSONP实现

对于跨域问题,可以使用JSONP实现。用户在父应用中登录后,跟Session匹配的Cookie会存到客户端中,当用户需要登录子应用的时候,授权应用访问父应用提供的JSONP接口,并在请求中带上父应用域名下的Cookie,父应用接收到请求,验证用户的登录状态,返回加密的信息,子应用通过解析返回来的加密信息来验证用户,如果通过验证则登录用户。

这种方式虽然能解决跨域问题,但是安全性其实跟把信任存储到Cookie是差不多的。如果一旦加密算法泄露了,攻击者可以在本地建立一个实现了登录接口的假冒父应用,通过绑定Host来把子应用发起的请求指向本地的假冒父应用,并作出回应。因为攻击者完全可以按照加密算法来伪造响应请求,子应用接收到这个响应之后一样可以通过验证,并且登录特定用户。

三、通过页面重定向的方式

最后一种介绍的方式,是通过父应用和子应用来回重定向中进行通信,实现信息的安全传递。父应用提供一个GET方式的登录接口,用户通过子应用重定向连接的方式访问这个接口,如果用户还没有登录,则返回一个的登录页面,用户输入账号密码进行登录。如果用户已经登录了,则生成加密的Token,并且重定向到子应用提供的验证Token的接口,通过解密和校验之后,子应用登录当前用户。

Auth via redirect

这种方式较前面两种方式,接解决了上面两种方法暴露出来的安全性问题和跨域的问题,但是并没有前面两种方式方便。安全与方便,本来就是一对矛盾。

四、通过CAS构建用户中心进行验证

大概想法:通过配置URL的形式,把某些登录请求发送到cas验证服务器上,然后此时分为两种情况,一种是没有携带ticket,另一种是携带ticket的。

处理第一种情况:拼装url请求,发送到服务器请求ticket,然后返回获得ticket,便到了第二步处理第二种情况:cas服务器对于ticket进行验证,返回结果

3.

python中单点登录以及Flask框架的单点登录如何实现?

4.

参考内容

(1)可以参考flask-sso拓展插件英文文档**(2)关于flask的session方面的插件插件

用户登录问题python_Python Flask单点登录问题相关推荐

  1. 单点登录系统SSO概述 | 单点登录讲解(1)

    本项目主要讲解的是单点登录系统的原理及其实现. 本章主要讲解的是单点登录系统的概述部分. 单点登录 单点登录顾名思义就是从一个系统进行登录操作,就可以访问其他附近的系统.单点登录避免了用户重复的登录过 ...

  2. SSO单点登录-基于cookie的单点登录

    1.概述 单点登录(Single-Sign-On),简称SSO,它的解释为:在多个应用系统中,只要登陆一次,便可以访问其它相互信任的系统.早期系统由于只有一个服务,因此只需要登录一次,就可以访问系统的 ...

  3. 单点登录技术:微软Passport单点登录协议和自由联盟规范

    原文地址:http://www.poluoluo.com/jzxy/201109/142060.html 随着互联网络应用的普及,越来越多的人开始使用互联网上提供的服务.然而目前提供服务的网站大多采用 ...

  4. 详解比springSecurity和shiro更简单优雅的轻量级Sa-Token框架,比如登录认证,权限认证,单点登录,OAuth2.0,分布式Session会话,微服务网关鉴权

    文章目录 1. 技术选型 2. Sa-Token概述 2.1 简单介绍 2.2 登录认证 2.3 权限认证 3. 功能一览 4. Sa-Token使用 4.1 引入Sa-Token依赖 4.2 Sa- ...

  5. 单点登录(一)—— 单点登录及常见解决方案原理(CAS、oauth2、JWT)

    背景 在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,用户用不同的账号即可登录,很方便. 但随着企业的发展,用到的系统随之增多,用户在操作不同的系统时,需要多次登录, ...

  6. 什么是单点登录?如何理解单点登录

    什么是单点登录? 什么是单点登录?    因为讲了Cookie,讲了Session,这里我觉得有必要说一下单点登录.我们先来看一下什么是单点登录:单点登录(Single Sign On),简称为 SS ...

  7. 用户登录业务逻辑(单点登录,权限登录,普通登录)

    /*** APP登录时传的参数 1管理 2维修 3安装 4巡检* 1管理APP:需要判定是账号和密码和管理员的权限* 2安装APP,4巡检APP:只需要判定账号和密码* 3维修APP:需要判定账号密码 ...

  8. thinkphp限制单点用户登录_php的sso单点登录实现方法

    本文实例讲述了php的sso单点登录实现方法.分享给大家供大家参考.具体分析如下: 这里详细讲到了几点: 1.点击登录跳转到SSO登录页面并带上当前应用的callback地址 2.登录成功后生成COO ...

  9. 登录业务介绍(单点登录)

    用户登录业务介绍 单一服务器模式 早期单一服务器,用户认证. 缺点:单点性能压力,无法扩展 SSO(single sign on)模式 分布式,SSO(single sign on)模式 优点 :  ...

最新文章

  1. tls 禁用重协商_TLS Https连接失败问题(协商失败)
  2. evcdf matlab,求助大神
  3. MyBatis学习总结(三)——优化MyBatis配置文件中的配置
  4. Java使用Redis
  5. 果汁飞溅海报还不会玩?先从临摹学习PSD分层模板开始
  6. Android thumbnail 图片的获得及与原始图片的映射
  7. vc中操作Xml--使用CMarkup类
  8. Producer-Consumer question : OO 生产者-消费者:面向对象
  9. 第三届蓝桥杯Java组 黄金队列
  10. SNMP中的MIB是什么? 讲解如何进行SNMP MIB的查看
  11. 文献阅读:SimCSE:Simple Contrastive Learning of Sentence Embeddings
  12. Erlang-VM节点启动名冲突问题
  13. 移动安全学习笔记——组件安全之组件暴露导致的安全问题(含实验)
  14. 音频降噪的软件有哪些?快来看看这些软件
  15. Logo设计中的黄金分割率
  16. 高薪程序员面试题精讲系列91之Limit 20000加载很慢怎么解决?如何定位慢SQL?
  17. DTOJ3702 月读(tsukuyomi)
  18. linux网卡驱动离线安装_如何在ubuntu(也就是Linux)下安装网卡驱动
  19. 01.Nodejs1教程
  20. 推荐给中学生的数学课外书:《数学与生活》

热门文章

  1. 移动端页面兼容性问题解决方案整理
  2. javascript按中文首字母排序
  3. JavaScript 设计模式之代理模式
  4. 素数/质数的判断(C++)
  5. Struts2框架中s:if标签和s:set标签小结
  6. 赢利定位是网站建设前提
  7. 编写shell脚本实现tomcat定时重启的方法
  8. 【Excel-2010】导入网站数据
  9. 【Oracle】创建角色
  10. vue : 本地调试跨域问题的解决办法:proxyTable