sso单点登录解决方案 java_实现单点登录

sso单点登录解决方案 java_实现单点登录单点登录让你一次性解决多应用认证的繁琐

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

? 什么是单点登录

  • 单点登录: SSO(Single Sign On) 用户只需登录一次,就可访问同一帐号平台下的多个应用系统。
  • 比如阿里巴巴这样的大集团,旗下有很多的服务系统,比如天猫,淘宝,1688等等,如果每个子系统都需要用户进行登录认证,估计用户会被烦死。
  • SSO 是一种统一认证和授权机制,去解决这种重复认证的逻辑,提高用户的体验。


sso单点登录解决方案 java_实现单点登录

单点登录原理图

? 单点登录的凭证

  • 由单点登录的原理,可以看出来,最重要的就是这个通用的登录凭证 ticket 如何获得
  • 而实现 ticket 多应用共享主要有三种方式:父域加密 Cookie、用户认证中心、Localstorage
  • 用户在登录父应用后,服务端返回用户登录后的 cookie,客户端将该 cookie 保存到父域中
  • 这个 cookie 最好经过加密处理,因为 Cookie 本身并不安全
  • 这种加密算法只有服务端才可以知道,服务端的解密算法不能暴漏
  • 放在父域中,主要是因为 Cookie 不能跨域实现免登,放到父域中可以解决跨域的问题
  • 父域也就是 domain 要设置成主域名,而非二级域名,这样二级域名就可以使用同一个 Cookie
// 如果某个平台有三个应用,分别是:
// 门户应用:www.autofelix.com
// 商城应用:shop.autofelix.com
// 支付应用:pay.autofelix.com

document.cookie = "ticket=xxxxxx;domain=.autofelix.com;path=/

? 用户认证中心方式

  • 使用一个认证中心,用来专门负责处理登录请求
  • 用户中心不处理业务逻辑,只是处理用户信息的管理以及授权给第三方应用
  • 第三方应用需要登录的时候,则把用户的登录请求转发给用户中心进行处理,用户处理完毕返回凭证,第三方应用验证凭证,通过后就登录用户。
  • 流程是用户访问应用系统,应用系统先检查用户是否有 Ticket,如果没有,则说明用户在该应用上尚未登录,跳转到用户中心,通过用户中心的 Cookie 去判断用户是否在其他应用上进行了登录
  • 如果认证中心发现用户尚未在其他任何应用上执行过登录,则提示用户执行登录操作,等待用户登录后,生成 Tickcet,并让 Ticket 拼接在 URL 上,重定向回应用系统
  • 当应用系统拿到 Ticket 后,将重新向用户认证中心发起验证,防止该 Ticket 是用户伪造,验证成功后,记录用户登录状态,并将 Ticket 写入到当前应用的 Cookie
  • 而当用户访问该应用系统时,就都会带上当前的 Ticket,也就能正常访问服务了


sso单点登录解决方案 java_实现单点登录

用户认证中心方式

? localstorage方式

  • 当用户在一个应用下登录后,前端可以通过 iframe+postMessage() 方式,将同一份 Ticket 保存到多个域名下的 LocalStorage
  • 但是这种方式完全由前端控制,后端仅仅需要将用户登录成功后的 Ticket 返回给前端处理即可
  • 这样其实也实现了,多应用下单点登录的问题,并且支持跨域


sso单点登录解决方案 java_实现单点登录

localstorage方式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170851.html原文链接:https://javaforall.net

(1)
上一篇 2022年8月16日 下午7:36
下一篇 2022年8月16日 下午7:36


相关推荐

  • print和println的区别

    print和println的区别其实两者就打印来说的话 是没有什么区别的 但是要注意的一点就是 print 打印出来的内容是不能够自动换行的 而 println 可以 虽然概念很简单 但是两者运用到不同的场景下却有不同的作用 比如打印带 三角形 如果使用 println 的话是不能够打印出来的 打印出来的结果是每一行都只有一颗 但是使用 print 可以实现

    2026年3月18日
    2
  • Oracle 触发器两种写法「建议收藏」

    Oracle 触发器两种写法「建议收藏」//复杂触发器,功能数据插入是触发数据联动//注意:new.DATA_REGION:=才是赋值CREATEORREPLACETRIGGERTRIGGER_NAMEBEFOREINSERTONTABLE_NAMEFOREACHROWDECLARECREATE_USER_IDVARCHAR(40);CREATE_DATEDATE;DH_EVENT_IDVARCHAR(50);DATA_REGIONVARCHAR(10);BEGI

    2022年7月11日
    16
  • spring ioc源码解析_spring事务源码深度解析

    spring ioc源码解析_spring事务源码深度解析SpringApplication源码解析运行SpringApplication的方式在创建SpringBoot应用,我们经常看到SpringApplication.run(ApplicationConfiguration.class,args);那有没有其他方式可以运行SpringApplication,答案是有的。我们可以通过自定义SpringApplication来实现Sprin…

    2025年10月15日
    6
  • 求助:为什么登陆不上codelf[通俗易懂]

    求助:为什么登陆不上codelf[通俗易懂]笔记本和手机都能登陆上这个网站,为什么台式电脑就打不开网页了呢?在线求助!!!

    2022年5月31日
    39
  • 河北专接本计算机专业课平均分,2019年河北专接本招生数据及通过率分析[通俗易懂]

    河北专接本计算机专业课平均分,2019年河北专接本招生数据及通过率分析[通俗易懂]每天都会有很多的同学咨询小编河北专接本各个专业的通过率,其实对于单科的通过率来说并不能作为你专接本选专业的首要因素,因为专接本的分数充满的随机性,同学们往往会被某专业专业的高通过率所迷惑从而做出错误的选择。那么易学仕小编整理了一下河北专接本2019年的通过率,仅供大家参考!经管类是财经类和管理类,19年刚刚合并为经管类!这个大类一共招收2667人,参加考试达到100分以上的人数是8686人,整体通…

    2022年7月16日
    36
  • C# 简单封装一个XML文件读取类

    C# 简单封装一个XML文件读取类

    2021年8月13日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号