Spring Cloud微服务安全实战_5-6_基于session的SSO优缺点以及适用场景

到目前为止已经实现了一个基于session的SSO

优点:

  1,安全 。所有的token的信息都是放在session里(客户端应用session、认证服务器session),在浏览器里只有一个jsessionId,在浏览器这边只要做好session固定攻击的防护,一般是不会有什么风险的。

  2,可控性高。token信息存在了数据库,登录信息存在了redis,想让谁下线就让谁下线,想让谁失效就让谁失效。

  3,跨域。客户端应用部署在哪个域名下,都可以直接跟认证服务器交互。

缺点:

  1,复杂度高。 session和token机制混合使用,session又分为客户端服务器和认证服务器两种,各自有各自的过期时间,access_token和refresh_token 又都有各自的过期时间。你必须非常清楚每个东西是干嘛的,过期后对系统会产生什么影响,系统的行为是什么,你要怎么处理,都要心里很清楚,才能用好这种方案。

  2,性能低。session、token的存取占用服务器资源,当用户量大的时候会有各种问题。比如当用户上亿的时候用这种方案是不可行的。

适用场景:

  1,适用于百万以下用户。token表最多一百来万数据,这个性能是可以保证的,也不会占用服务器太多资源,也不用考虑分库分表、读写分离。

  2,内部的管理系统。每一个客户端应用都是一个XX中心,如用户中心,订单中心,商品中心等,每一个中心都是可以单独部署的,他们都用同一个页面风格,各个系统可以跳来跳去,后边是一个统一的认证服务器,网关来访问微服务。用户看来是一个系统,适合于一定规模的内部管理系统。

  

原文地址:https://www.cnblogs.com/lihaoyang/p/12169298.html

时间: 2024-11-05 09:28:32

Spring Cloud微服务安全实战_5-6_基于session的SSO优缺点以及适用场景的相关文章

Spring cloud微服务安全实战-5-7实现基于session的SSO(客户端应用的Session有效期)

授权模式改造成了Authorization code完成了改造的同时也实现了SSO.微服务环境下的前后端分离的单点登陆. 把admin的服务重启.刷新页面 并没有让我去登陆,直接就进入了首页. order的API控制台 只要你在认证服务器上的session没过期.认证服务器就知道你是谁,他就不会让你输入用户名密码了.直接跳回到客户端应用. 一共有三个有效期. 退出操作 退出的时候.现在前端服务器清空session,认证服务器也需要清空session 在前端服务器退出后,再跳转到认证服务器执行退出

Spring cloud微服务安全实战-5-9实现基于session的SSO(Token有效期)

token的有效期 会出现一种情况session有效期还没到.但是token过期了. 用户登陆着,但是token失效了 没法访问服务了. 刷新令牌要和clientId和ClientSecret一起用,发请求才有效. 那么刷新令牌在哪里?在数据库内 我们从来没有配置这个字段. refresh_token_validity:刷新令牌的有效期.不配置就不会发refresh_token, 什么时候配置上了这个值,就会发refresh_token.这里配置一个 259200 ,30天的有效时间. toke

Spring cloud微服务安全实战-_5-10实现基于session的SSO(Token有效期)

refresh_token过期了怎么办,虽然可以设置一个比较长的有效期,但是终归还是要过期的. 只能从认证服务器重新走认证授权的流程. 两种情况 1,session还没过期的,跳过去之后,直接就知道你是谁,生成一个令牌返回给你 2.session也过期了,重新输用户名密码登陆 也可以去控制,一旦refres_token过期了.在跳往认证服务器之前,整个全都退出掉.就是refresh_token过期了 就要求用户必须重新输入用户名密码重新进行登陆. 刷新令牌的时候,加一个错误处理. 刷令牌失败就重

Spring Cloud微服务框架 实战企业级优惠券系统

第1章 课程介绍[终于等到你,快来认识我]本章中将对课程中涉及到的技术.工具.业务等进行简单介绍. 第2章 准备工作[工欲善其事,必先利其器]本章中将对课程中使用到的技术工具做介绍,包括Maven.MySQL.Redis.Kafka:会对它们的功能.安装.基本的使用方法进行介绍. 第3章 SpringBoot 开发框架[基础打不牢,学问攀不高]课程主体业务使用SpringCloud框架开发实现,但是SpringCloud基于SpringBoot实现.为便于更顺畅学习,本章中会对SpringBoo

Spring cloud微服务安全实战

第1章 课程导学我们会对整个课程的内容做一个简要的介绍,包括章节的安排,使用的主要技术栈,实战案例的介绍以及前置知识的介绍等内容. 第2章 环境搭建开发工具的介绍及安装,介绍项目代码结构并搭建,基本的依赖和参数设置. 第3章 API安全我们从简单的API场景入手,讲述API安全相关的知识.首先我们会介绍要保证一个API安全都需要考虑哪些问题,然后我们针对这些问题介绍常见的安全机制,我们会针对每种问题和安全机制编写相应的代码,让大家对这些问题和安全机制有一个初步的认识.... 第4章 微服务网关安

Spring cloud微服务安全实战完整教程

本文配套视频教程及资料获取:点击这里 Spring Cloud微服务安全实战 采用流行的微服务架构开发,应用程序访问安全将会面临更多更复杂的挑战,尤其是开发者最关心的三大问题:认证授权.可用性.可视化.本课程从简单的API安全入手,过渡到复杂的微服务场景,解决上述三大问题痛点,并结合实际给出相应解决方案.帮助大家形成对安全问题的系统性思考,实战开发一套可在中小公司落地的完整的安全方案. 学习目标: 技术要点: 环境参数: 本文配套视频教程及资料获取:点击这里 原文地址:https://www.c

Spring Cloud微服务安全实战_5-2_基于session的SSO

上一篇将OAuth2授权模式的password模式改造成了授权码模式,并初步实现了一个前后端分离架构下基于session的微服务的SSO.用户在客户端点击登录,会跳转到认证服务器的登录页面进行登录,登录成功后,认证服务器回调到客户端应用的callback方法,并携带了授权码,客户端拿着授权码去认证服务器换取access_token ,客户端拿到access_token后存到自己的session,就认为该用户已登录成功. 上边这个流程是一个基于session的SSO,其中有三个效期: 1,客户端应

Spring Cloud微服务安全实战_4-5_搭建OAuth2资源服务器

上一篇搭建了一个OAuth2认证服务器,可以生成token,这篇来改造下之前的订单微服务,使其能够认这个token令牌. 本篇针对订单服务要做三件事: 1,要让他知道自己是资源服务器,他知道这件事后,才会在前边加一个过滤器去验令牌(配置@EnableResourceServer 配置类) 2,要让他知道自己是什么资源服务器(配置资源服务器ID) 3,配置去哪里验令牌,怎么验令牌,要带什么信息去验 (配置@EnableWebSecurity 配置TokenServices,配置Authentica

Spring cloud微服务安全实战-4-7重构代码以适应真实环境

现在有了认证服务器,也配置了资源服务器.也根据OAuth协议,基于令牌认证的授权也跑通了.基本的概念也有了简单的理解. 往下深入之前,有几个点,还需要说一下 使用scopes来控制权限,scopes可以理解为之前的ACL 第三章的时候自己写的ACL来控制的读写权限.在OAuth协议里面用scopes来实现ACL的权限控制,两方面,首先在服务器这一端,可以针对不同的应用发出去不同权限的令牌, . 比如针对oderApp可以有读权限,也可以有写的权限. 针对orderService发出去的就只有re