最近做了一些登录相关的工作,顺便看了下常见的登录方案,这里主要从后端的角度梳理一些技术细节。

文章目录

  • 单点登录
  • 第三方登录

单点登录

单点登录(Single Sign On),简称SSO,是目前比较流行的一种解决方案,其表现为对一组相互信任的应用,用户只需要登录其中一个应用,就可以访问所有相互信任的应用,登出依然。

最常见的就是淘宝和天猫,当登录其中之一后,另外一个天然的共享登录态。

单点登录实现需要依赖独立部署的认证服务来实现。

我们假设有A和B两个相互信任的应用,共同接入了独立部署的认证中心sso(接入采用的是OAuth,在第三方登录中会详细地说明,这里可以不用纠结具体的接入细节),以此为例来详细描述单点登录过程,流程图如下。

  1. 初始状态为A、B应用均未登陆,此时向A应用(域名a.com)发送请求,cookie为空,验证未通过,重定向至sso。
    说明: 正常重定向是302,这里我们返回的是401,然后带了location,需要前端处理一些逻辑,至于原因不是很清楚。
  2. 请求只sso后会返回登录界面,可以是账号密码登录,也可以是二维码登录。
  3. 用户进行登录操作后并验证成功后会在 sso.com下种下cookie,然后带着sso颁发的ticket重定向至a.com的。
  4. A服务拿到ticket后向sso发起请求,验证ticket有效后返回用户的信息,A服务在a.com种下cookie。
  5. 至此,整个登陆过程结束。后续A服务拿到cookie后要向sso发送请求进行验证,因为只有这样,所有的应用才能共享登录态及登出态。

A应用登录后,我们再看B应用是如何共享登录态的。 6. 浏览器向B应用发送请求,此时b.com下没有cookie,验证失败,重定向至sso。 7. sso.com下带有A应用登录时种下的cookie,sso使用此cookie验证通过,跳过了用户登录。 8. 后续过程和上面一样,会在b.com下种下cookie。

第三方登录

目前第三方登录采用的都是OAuth2.0标准,其是一种可以在第三方应用在不知晓用户认证信息(用户名密码等)的情况下获取登录态以及用户信息的方法。
下面以lark的OAuth为例说明第三方登录过程(授权码模式)。
可以看到整个过程和上面利用sso登录的过程基本一样,因为我们说过一般接入sso服务都是用的OAuth。然后和上面的区别是:

  1. lark下不会有cookie,同时接入lark的应用不会共享登录态。
  2. a.com的cookie由应用自身管理,不需要每次请求lark进行验证。

单点登录和第三方登录相关推荐

  1. Node.js+express+MySQL仿美团注册登录绑定第三方登录

    原文连接 准备 在开始做这个前,希望你已经配置好的Node,express和MySQL的开发环境.也可以参考参考文章 开发环境的配置 新建项目 参考Mac下express的安装和新建项目 mysql模 ...

  2. react移动端登录(第三方登录)和个人执行实现

    react和antdMobile实现的移动端登录(第三方登录)和个人执行实现 部分代码展示: 效果展示 注意:发送的Ajax请求均为mock模拟生成,如需使用请在src/api/Ajax.js下统一修 ...

  3. 什么是第三方登录,第三方登录如何选择

    第三方登录不得不说的一个优势:那就是本地注册和第三方注册的选择.虽然这是一个不能称之为问题的问题,其中的心理学不得不说:做为一个app的新用户,你有两个选择:1.做一个很受欢迎的用户,注册帐号,完善信 ...

  4. Cookie + Session登录-Token登录-SSO 单点登录-OAuth 第三方登录

    文章目录 1.Cookie + Session 登录 2. Cookie + Session 存在的问题 3.Token 登录认证 1. Token 机制实现流程 2. Token 机制的特点 3. ...

  5. Spring Security OAuth2 优雅的集成短信验证码登录以及第三方登录

    基于SpringCloud做微服务架构分布式系统时,OAuth2.0作为认证的业内标准,Spring Security OAuth2也提供了全套的解决方案来支持在Spring Cloud/Spring ...

  6. php 微信第三方登录demo,第三方登录 - 快速接入微信、QQ、微博等第三方登录方式 – 基于ThinkPHP和Bootstrap的极速后台开发框架...

    此插件基于FastAdmin和Thinkphp5开发的第三方登录插件,可用于对接微.微博.QQ等第三方登录,目前CMS中的小程序账号登录绑定就是基于此插件开发,在使用CMS中的小程序登录功能之前请务必 ...

  7. mysql用户登录和第三方登录_mysql 用户表结构设计,第三方登录

    说起用户表,大概是每个应用/网站立项动工(码农们)考虑的第一件事情.用户表结构的设计,算是整个后台架构的基石.如果基石不稳,待到后面需求跟进了发现不能应付,回过头来反复修改用户表,要大大小小作改动的地 ...

  8. 【第三方登录】第三方登录 Part1 —— QQ登录(2016-09最新版)

    由于楼主是web开发方向,所以这里就介绍一下web接入qq登录的方法,以及和app的qq登录打通的方法 0.前提 已经有一个在工信部备案过的域名的网站,具体可以查询工信部的备案页面(请注意这里的信息很 ...

  9. joomla QQ登录,微信登录,微博登陆,人人登陆,明道登录的第三方登录

    在joomla网站上集成QQ,微信,支付宝,人人,明道,短信,微博登录现在已经成为可能.只需要安装ZMAX程序人开发的ZMAX第三方登录组件,一键就可以让你的网站轻松集成当前流行的第三方登录. 国产开 ...

最新文章

  1. 如何拆分PDF,PDF拆分页面的方法
  2. 面向接口编程详解(三)——模式研究
  3. thinkphp-条件判断-范围判断-NOTBETWEEN
  4. Matlab中配置LibSVM 总结
  5. python装饰器编程_Python编程中装饰器的使用示例解析
  6. BufferedReader和FileReader的区别
  7. LeetCode:Largest Number - 求整型数组中各元素可拼合成的最大数字
  8. 三班的孩子们,你们现在还好吗?
  9. Net框架下-ORM框架LLBLGen的简介(转载)
  10. linux kvm dhcp配置,《转》QEMU-KVM创建虚拟机自动指定IP的配置
  11. Spring源码分析之BeanPostProcessor接口和BeanFactoryPostProcessor接口方法不执行原因分析
  12. 每天一道剑指offer-约瑟夫环求解圆圈中剩余的数
  13. cat的用法matlab,MATLAB中“repmat”与“cat”函数的用法
  14. VS编译器的使用——VS2019新建控制台工程
  15. 如何安装Win10/Ubuntu双系统
  16. 计算机毕业设计Java-ssm博雅楼自习室预约系统源码+系统+数据库+lw文档
  17. android查看签名工具,签名获取工具app_apk签名工具安卓版_手机apk签名工具安卓版-多特软件站安卓网...
  18. 密码算法测试向量——目录
  19. 是一套基于PHP,zhw_cms 中和网企业建站系统这是一套基于PHP的快速 ,主要适用于中小 建立 WEB(ASP,PHP,...) 267万源代码下载- www.pudn.com...
  20. Windows 7 插入耳机后没声音,拔下后扬声器有声音

热门文章

  1. python关于猫眼爬虫数据加密问题解决(2020)
  2. 浅析 CSS 新增的样式分层能力
  3. Hive探秘--内部表、外部表、分区表、桶表研究
  4. 使用arduino测量电压的超级简单的方法
  5. UE4虚幻引擎,怎么更改视图,场景中的图标大小
  6. js 混淆 - 源码乱码
  7. R语言 Error in parse_repo_spec(repo) : Invalid git repo specification: ‘riv‘
  8. HDU 4664 Triangulation-SG函数
  9. CUDA python 3.9 安装
  10. Spring 的扩展机制测试