java单点登录session的问题

1.如何管理全局session的过期时间?
全局session必须在所有局部session过期才会过期,这不是每次操作都得更新一下?或者设置为永久,监听所有局部session过期后手动失效?
2.为什么都要使用token来验证?
看了很多像cas都有token,直接看这个全局的session(或者redis)是否验证过就行了,还要搞个token有特殊意义吗?
3.是否有必要存cookie(还是token),因为可以用jsessionid
好像没币了....

0

1个回答

1、session的目的是为了在服务器端维护用户的信息,为了避免大量用户接入,而每个用户访问时长都很短,这才给session添加超时的约束。基于这个前提,session一般设计的时候可以不需要每次操作都需要刷新,一旦超时,可以让用户再次登录。当然用户体验上不是很好,但是这自然是没问题的。
我们一般采用折中的方案,我们选取操作流程中的安全点,安全点是指我们核心业务中用户必定会操作的点,只在安全点上进行刷新用户session,这样可以解决你的问题。

2、token机制是为了安全,但是仅仅使用token时不够的,结合你的第一个问题,一般都是用户登录的时候生成token,而且token必须经常刷新。如果没有token保护,web接口基本上任何人都可以调用,如果是一般read操作也就罢了,但是如果是写操作,想想就可怕,直接通过接口篡改用户数据。。。

3、jessionId这是框架生成Id,但是我们一般都是全局session,所以sessionId都是自己生成的。cookie和session功能都是一样的,都是为了保存用户信息,只不过一个在客户端一个在服务器。至于用不用,怎么用还是看需求,辅之安全性考虑。

建议你读一下HTTP的RFC文档,你说的这几个问题涉及到HTTP的用户信息保存、安全性。

1
weixin_37893887
玄尺 回复u014794644: 接口的安全性通过token进行保证,token生成是用户授权来保证,用户授权是用户密码保证,也是就是说只要用户密码能够保证安全,我们的接口安全性就可以使用token进行保证。这里的接口一般来说是无状态的(不需要session),如果使用session的话可以不需要token验证接口安全,只要维护好sessionId安全就可以了
大约一年之前 回复
u014794644
瓦史托德 回复u014794644: 还有cookie存token,我没有想到集群sessionId不同的情况--!
大约一年之前 回复
u014794644
瓦史托德 token不是只验证登录,接口安全设置权限 ?
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
单点登录session超时
session过期后跳到单点登录地址,带着ticket参数去验证用户,如果单点登录验证到ticket没过期,就不会去登录页面,但是会刷新当前页,因为从单点登录地址重定向到了当前页面地址。所以给用户的感觉就是长时间不操作时,点击页面元素会出现刷新页面的情况。另外,java项目和shiro集成时有两个地方可以设置session过期时间,如图所示1.shiro配置xml文件中,这个优先级最高2.web....
单点登录——解决分布式项目中session共享问题
初学有感,希望各位大佬在下面批评指教,晚辈万分感激!----------------------------------------------------------------------------------------------------------------------------------单点登录的实现其实就是cookie与redis配合模拟一个session,具体思路:用户...
单点登录SSO-使用session共享方式
Java在集群中进行单点登录这里记录两种实现方式 环境:tomcat.集群 方法:将用户信息存入session中,实现session共享 第一种:对tomcat进行session复制 进行tomcat的session共享,配置tomcat集群,设置好session的过期时间,tomcat配置好集群后,会不停的向集群中的其他的tomcat广播自己的session信息,其他的tomcat做se
SSO单点登录与session管理
sso认证(A网站、B网站、C登录认证网站): 1、用户访问A网站,服务A通过session("openid")判断是否登录 2、没有登录跳转到C登录认证网站登录认证,认证通过后 C网站创建 setSession("openId")为C网站的cookie,这个openID能找到user对象 (以openID的值作为key,value为用户对象存到memcache或者redis,这样哪个服务器都可以...
单点登录的解决方案(Session)
以前,做过的项目中有单点登录的模块,以前做的模块没仔细观察,查看资料发现单点登录的解决方案还挺多!以下就记录单点的不同解决方案;  http协议的特性 无状态的,就是用户连接只要获取响应,服务器不记录用户状态,就算用户访问100次,服务器也不知道用户具体信息;     1.集群环境下的session共享问题 通过cookie+session可以保存用户状态;      2.关于负载均衡算...
在分布式集群项目中解决session共享实现单点登录
先说下为什么要实现session共享,因为在普通的web项目中是不需要考虑这点的,因为都在一个项目当中,但是当分布式或者集群的时候,相同的项目部署在不同的服务器上,这时候就需要考虑这个问题,因为假如一个用户,在tomcat1登录成功,这时候他刷新了一个页面,然后负载均衡服务器nginx把他分配到了tomcat2上的项目中,这个项目中是没有刚才登录成功的session的,但是人家明明登录成功了,这给...
单点登录系统SSO中的session的共享问题
什么是单点登录:SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。比如现在有:OA系统、门户系统、人力资源管理系统、档案管理系统、生产管理系统、xx系统等,这么多个系统。在一个公司里面,如果一个用户需要...
关于单点登录模块中Session共享问题
在传统登录项目中,我们一般会把用户信息放入到session中。 但是高并发的情况下,我们一般会对tomcat做集群,这时候就产生了session共享问题。 在集群环境中,怎么解决session共享问题? 一,配置tomcat文件,tomcat会不停的向局域网内做session复制,但这种方法不建议在很多服务器的情况下使用,如果tomcat数量超过了5台以上,那么会严重影响服务器的性能。 这...
分布式系列 单点登录和session共享实现
上篇文章简单的描述了下单点登录的场景和解决单点登录问题的几套方案。    本文将从具体实现层面剖析如何实现SSO和session共享。
Session跨域及单点登录解决方案
cookie机制 关于cookie和seesion的联系 cookie中会包含那些信息 名字,值,过期时间,路径,域 cookie会带到http请求头中发送给服务端 如果cookie没有设置过期时间的话,那么cookie的默认生命周期是浏览器的会话   session机制 1,session是容器对象,客户端在请求服务端的时候,服务端会根据客户端的请求判断是否包含了jsession...
分布式系列 单点登录和session共享
最近跟组织一起学习,本来说好的学习大数据,不知道怎么的,忽然一看材料,莫名转战到了分布式,搞起了高级架构的知识了。     看了看故事的梗概,还不错,从基础的分布式调用和架构设计,再到事务一致性,HA,到web应用,数据库高可用和性能优化等一系列,也算是有一个很不错的体系,就计划坚持着学下去了。     在学习分布式系列之前,曾经也花了一段时间了解过单点登录和Session共享的问题,只不过当
单点登录和session共享
最近所做的项目要分拆成2个网站,单点登录的问题就出来了。   首先想到的就是赫赫有名的CAS了,以前项目也用过,用起来还是挺简单的,不过总觉得大炮打蚊子的感觉,就像原来用的安全框架acegi,没别的要求还行,又点特别的需求,感觉这东西是太复杂,最后还是自己实现简单的权限管理了事。   想想单点登录应该也不难,是不是勤快一点自己造一简单的轮子,想圆就圆想方就方,也是很爽的,思考下,就目前的情况单点登...
【SSO】单点登录 & Session共享
单点登录 背景: Tomcat集群可能因为两次访问的Session不一致导致登录失败,无法访问后续页面; 解决可以通过tomcat互相进行Session共享实现,但是这仅仅试用于小集群; 如果集群变大,就会有大量Session进行互相共享,负载很大; SSO SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系...
redis实现session共享之单点登录
转载:https://blog.csdn.net/qq_37334135/article/details/77727456  
Java实现基于Cookie的单点登录看这篇文章就够了
Java基于Cookie实现单点登录SSO一、通过cookie来实现单点登录1.单点登录的流程2.编码实现单点登录 SSO SSO(Single Sign On),单点登录。 需求:有一个代码商店,用来购买代码的,代码商店的首页:www.codeshop.com,vip系统:vip.codeshop.com,购物车系统:cart.codeshop.com,登录系统:login.codeshop.c...
单点登录IE浏览器下sessionID改变问题
问题重现:项目A集成到项目B,ie9下通过项目B访问项目A时,sessionID会改变,导致每次登录都找不到用户,单点登录失败。 解决方法:  使用P3P协议 在项目A的拦截器代码中添加如下代码:   response.setHeader("P3P","CP=CAO PSA OUR");  参考文档:https://blog.csdn.net/rendeyishi/article/d...
sso单点登录系统(解决session共享)
场景:假设一个用户将自己的登录信息提交到后台,如果session保存的信息分布在多台机器上,并且不共享,那么可能导致用户的登录信息出现短暂的丢失,为什么这样讲,因为用户访问服务器中间还要经过负载均衡服务器,负载均衡采用轮询的方式转发用户的登录请求。有可能访问到的那台机器用户恰好没有往服务器提交信息,导致信息出现短暂性丢失。这时一般有两种解决方案。 一.配置session集群(也就是tomcat服
6.登录系统-单点登录问题-基于redis的单点登录同步登出与帐号退出的功能设计
今天项目做到了基于redis的单点登录登出设计,所以有必要记录一下。重点知识,面试。涉及到的知识点:token,UUID,userID(模仿微信的扫码登录),cookie,redis等什么是SSOSSO英文全称SingleSign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是...
基于Cookie和session,实现单点登录
公司目前有两个项目,需求实现单线,为了尽快完成进度,基于cookie实现了单线,在此记录一下,以免忘记。 两个项目都是基于SSM 框架,登录使用的是session,为了尽量少的改动两个项目,为两个项目添加拦截器。并在登录、注册、退出的功能做了少量的改动。 1、拦截器实现 @Override public boolean preHandle(HttpServletRequest r
使用SessionListener+持久化Session+Springmvc拦截器实现单点登录
使用SessionListener+持久化Session+Springmvc拦截器实现单点登录
SPRING SESSION实现单点登录
概述 利用Spring session和redis数据库实现单点登录功能。介绍了Spring session 的使用,包括从jar 包的导入,redis 数据库的配置,spring session配置文件的编写,到最后单点登录功能的实现。
单点登录cas常见问题(一) - 子系统是否还要做session处理?
如果使用phpcase等cas系统提供的客户端sdk,他帮我们自动做好了session的处理:cas中心验证用户凭证后,会把用户信息传递给子系统,子系统的客户端sdk会把cas中心传回来的用户信息保存到session中(默认是保存user),并且在返回浏览器时将sessionid写到cookie中 可以在子系统登录后,打印出sessionid和内容                 var_du
基于session简单的实现单点登录
web服务器为每一个浏览器实例对应一个session。 这个session有自己的一个独立id,这个id保存在浏览器的cookie中(这个cookie貌似随着这个浏览器实例的关闭而清除), 访问web服务器的时候,web服务会根据你cookie中的sessionId来决定重新创建一个session还是使用已经存在的session。 如果使用桌面的ie图标打开一个IE窗口,这个窗口属于一个新的
单点登录session共享及session中的cookie共享的配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.
session共享和单点登录 springboot的实践和思考
我这两天公司需要一个收银台项目,让我写,我就直接把以前学的springboot搭建项目用上了,确实很方便,一个小时搭建完成。我就正常使用,没有问题 但是今天出现一个问题,同事说我需要在你这个项目中获得商城项目的用户信息,我就想到了session共享。 突然我想到了session共享和单点登录的区别: 特意去查询了一下: 个人感觉: 单点登录:就是在认证身份系统中进行登录,他的所有子系统(
同一tomcat下实现多应用session共享 单点登录
随着web开发的应用程序越来越复杂,我们可能会将原有的一个应用拆分成多个应用,同时也应该支持新增加的应用扩展, 但又希望通过单点登录统一管理所有的应用,二每一个web项目的session是独立的,不能只能同一管理, 而现在有很多比较流行的技术实现单点登陆 比如cas单点登录,restful令牌等等。 cookie共享等等,但是结余我们很多应用是很久之前开发的,使用session来管理,未考虑
跨站点共享Session解决方案,单点登录解决方案-ASP.NET 2.0版本
跨站点共享Session解决方案、单点登录解决方案(ASP.NET 2.0版本)通过序列化和反序列化机制实现的一种解决方案
nginx实现跨域单点登录并实现session的刷新
该方案的实现场景是多个tomcat分布式,需要session共享,即用户登录请求发给了一个tomcat,要求所有的tomcat都有该用户登录的token、session,下次请求转发到其他的tomcat时,仍然认为该用户是登陆状态。 具体实现需要配置nginx,进行vitual host的配置。 ...
JWT|单点登录解决方案|Spring Boot使用Redis如何实现Session共享
单点登录 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 传统session不能解决多服务器下单点登录 CAS ( Central Authentication Service ),基于Java实现的、开源SSO解决方案。cas旨在为 Web 应用系统提供一种...
Session、Cookie理解及SSO(单点登录--cas)
http://www.imooc.com/article/3555 HTTP是一个无状态协议。即对服务器来说,每次收到的浏览器HTTP请求都是单一独立的,服务器并不考虑两次HTTP请求是否来自同一会话,即HTTP协议是非连接会话状态协议。 对于Web应用登录,意味着登录成功后的后续访问,可以看做是登录用户和服务端的一次会话交互过程,直到用户登出结束会话。 如何在非连接会话协议之上,实现这种会话的
多系统session 共享实现单点登录
以tomcat服务器为例: 1.设置server.xml如下: <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"&a
SpringSession+Redis实现单点登录,解决cookie的跨域问题
如果有写的不对的地方请指出。谢谢 本文假设你已经安装好redis并且可以使用java正常对redis数据库进行操作。 为什么要使用单点登录:在一些比较大的项目中,一个项目会分为很多模块,每个模块都会部署到单独的服务器,使用原生的HttpSession只能将session保存在一台服务器,不能实现资源共享,这样就造成可能用户已经在A服务器登录了...
使用session保存用户登录状态(实现单点登录)
由于是软件公司,项目用户量很小,而且是传统项目,所以用session来存储用户的登录状态。前端是移动端,我为session对象写了一个工具类,供自己用,记录一下,说不定以后还会用到。 先上session工具的代码: package com.xxxx.utils; import java.util.ArrayList; import java.util.Date; import java.
CAS单点登录原理
术语介绍 1.SSO session:key="_const_cas_assertion_" value=assertion对象 这个是CAS客户端拿着ticket去server认证后存储的用户信息,是客户端存储的SSO会话。只要拿不到这个session,就必须重定向去登录 2.ST(Service Ticket)ST是CAS为用户签发的访问某一service的票据。用户访...
单点登录与权限管理本质:HTTP重定向
继续介绍「单点登录与权限管理」系列的第一部分:单点登录与权限管理本质,本篇说说HTTP重定向,它也是完成单点登录的基础知识。 该系列的完整写作计划,可见:系列概述 单点登录需要在多个web项目之间相互跳转,使用重定向技术,自动完成登录操作。另外,当实际资源被迁移到其他URL时,可使用重定向技术,将访问原有URL的请求,自动跳转到新URL,保持原有URL有效。 本篇主要从以下几个方面介绍: 重定向...
jsonp+session实现单点登录
username: password: $(function(){ $("input[type='button']").click(function(){ var username = $("input[type='text']").eq(0).val(); var password = $("input[type='text']").eq(1).val(); // a
完全跨域下单点登录的一种解决方案
根据oums单点登录解决方案介绍 一文我们知道单点登录有两种模型,一种是共同父域下的单点登录(例如域名都是 xx.a.com),还有就是完全跨域下的单点登录(例如域名是xx.a.com,xx.b.com),本文我们讲一下完全跨域下的单点登录该怎么实现。   基于安全考虑,想通过cookie来实现这个功能是不太可能的了(也许有其他黑科技可以实现,这里不做讨论)。这里介绍的方案是参考shiro框架的跨
cas 单点登录问题
cas 单点登录问题:[cas] in context with path [/cas_server] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: Cannot create a session after the response has been committed
获取zabbix, jumpserver用户的sessionid用于单点登录
获取zabbix sessionid`` def get_zabbix_session(): login_url = "http://{ip}:{port}{url}index.php" r_session = requests.session() postData = { "name": zabbix.user
shiro+cas+spring-data-redis实现多系统单点登录和分布式项目的session同步
CSDN开通很久了,但是一直没写东西,2018年了,这是我CSDN的第一篇文章,欢迎各位评论探讨和指点。     一、背景: 现在公司的业务系统要做多台分布式集群,由于是web项目,要做session同步,想到的方案是用目前火热的redis数据库存储session,还有业务系统已经是使用shiro+cas做了单点登录的。    参考了一些行家的文章,自己加工写了一个sharesession...