单点登录

JAVA单点登录

一曲冷凌霜 提交于 2019-12-07 18:50:56
首先我们先了解一下什么是单点登录? 单点登录Single Sign On简称为SSO,是目前比较流行的企业业务整合的解决方案之一。F5 BIG-IP Edge Gateway解决方案借助SSO改进用户体验。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 单点登录的好处? 单点登录可以做到在不记录用户密码的情况下,实现不同系统之间的资源共享,自动登录不安全,单点登录,一处登录,处处都可用,不用做多余的登录操作 单点登录的原理? 过程一:用户在单点登录的服务器的登录页面中输入用户名+密码 过程二:单点服务器会对用户名+密码进行认证(采用某种机制) 过程三:认证通过后,单点服务器会和应用程序产生一个比较复杂的 授权(例:cas方式通过ticket授权) 过程四:授权成功后,cas重定向到指定页面(根据返回的ticket信息 判断是否成功) 过程五:单点服务器会在客户端创建一个加密的Cookie,里面保存了 用户的登录信息 过程六:如果用户此时希望进入其他Web应用程序,则安装在这些 应用程序中的单点登录客户端,首先仍然会重定向到CAS服务器。 不过此时CAS服务器不再要求用户输入用户名和密码,而是首先 自动寻找Cookie,根据Cookie中保存的信息,进行登录。 登录之后,CAS重定向回到用户的应用程序。 具体的实现步骤: 1

【Java】单点登录

别来无恙 提交于 2019-12-07 18:50:24
【单点登录】 单点登录SSO(Single Sign On)。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。 画了一张图,大概描述下单点登录的过程。 【SSM+Dubbo+Zookeeper下实现】 Dao层 只涉及到tb_User单张表的查询操作,Dao层使用Mybatis的逆向工程代码 Interface层 import cn.e3mall.common.utils.E3Result; public interface LoginService { E3Result userLogin(String username,String password); } Service层 用户登录信息,每一条用户信息的sessionId存入cookie中,通过cookie获取sessionId,使用UUID作为sessionId。token本质上就是sessionId。 设置session过期时间,session过期时间在 resource.properties里配置。 #session 的过期时间 SESSION_EXPIRE=1800 在需要用到session过期时间的方法前添加注解。 @Value ("${SESSION_EXPIRE}") private Integer

java加token实现单点登录

青春壹個敷衍的年華 提交于 2019-12-07 18:48:38
之前看过一些文章,直接说不清楚,因为我也是第一次研究单点登录,所有自己想写一篇希望能有所帮助 dome地址: 0.准备工作 1、tomcat8本地的安装 2、maven3本地的安装 3、使用maven发布项目到本地 1.简介 json web token(JWT)是一种新的用户认证方式,不同与以前的Session. JWT不需要服务器端存储用户信息,当用户登录后,服务器将用户信息放入加密放入token(token会被客户端保存),需要时再通过对token解密获取(客户请求时携带token) 2.代码 下面提供一种JWT的简单实现.这个例子实现的功能是: 1) 用户访问login.jsp进行登录操作. 则发放给用户本地浏览器的token为:eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIxIiwiaWF0IjoxNTIyMjUzMTIwLCJzdWIiOiLmtYvor5XnlKjmiLcxIiwiZXhwIjoxNTIyMjUzNzIwfQ.5jWbc4yP11Qfz1T5HHAjFpgNWCtYyTwOmMB8rTZAY4s 2) 用户访问myServlet时,若用户已登录则跳转至info.jsp显示用户名,未登录则跳转至login.jsp. 地址后面一定要有参数,不然是post请求 在token有效期间,再次访问http://localhost:8080/jwt

java 实现单点登录及后门登录

别等时光非礼了梦想. 提交于 2019-12-07 18:48:21
单点登录:实质就是传一个登录id过来,到数据库中查出此id对应的用户信息,并将用户信息放入session中。 <span "><strong> </strong>/** * 单点登录 * * @param loginId * @param session * @return */ @Outer @RequestMapping("/login") public ModelAndView login(String loginId, HttpSession session) { // 登录跳转页面 String view = "common/login"; // 单点登录信息 if (StringUtils.isBlank(loginId)) { return new ModelAndView(view, "message", "用户信息丢失,请重新登录!"); } // 获取当前登录用户信息 UserInfo userInfo = userService.getUserInfo(loginId); if (userInfo == null) { return new ModelAndView(view, "message", "用户信息不存在,请重新登录!"); } // 当前系统只支持个体户用户和个人用户登录 // String userType = userInfo

JAVA实现简单的单点登录

烂漫一生 提交于 2019-12-07 18:48:00
摘要 :单点登录( SSO )的技术被越来越广泛地运用到各个领域的软件系统当中。本文从业务的角度分析了单点登录的需求和应用领域;从技术本身的角度分析了单点登录技术的内部机制和实现手段,并且给出 Web-SSO 和桌面 SSO 的实现、源代码和详细讲解;还从安全和性能的角度对现有的实现技术进行进一步分析,指出相应的风险和需要改进的方面。本文除了从多个方面和角度给出了对单点登录( SSO )的全面分析,还并且讨论了如何将现有的应用和 SSO 服务结合起来,能够帮助应用架构师和系统分析人员从本质上认识单点登录,从而更好地设计出符合需要的安全架构。 关键字 : SSO, Java, J2EE, JAAS 1 什么是单点登陆 单点登录( Single Sign On ),简称为 SSO ,是目前比较流行的企业业务整合的解决方案之一。 SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 较大的企业内部,一般都有很多的业务支持系统为其提供相应的管理和 IT 服 务。例如财务系统为财务人员提供财务的管理、计算和报表服务;人事系统为人事部门提供全公司人员的维护服务;各种业务系统为公司内部不同的业务提供不同的 服务等等。这些系统的目的都是让计算机来进行复杂繁琐的计算工作,来替代人力的手工劳动,提高工作效率和质量。这些不同的系统往往是在不同的时期建设起来 的

什么是单点登录SSO?

≯℡__Kan透↙ 提交于 2019-12-07 05:03:38
什么是单点登录SSO? 今天介绍下什么是单点登录,这个曾经的使用场景是国网电力的PMS2.0系统中,为了仅一次登录就可以同时访问多个系统,采用单点登录的模式。 单点登录在现在的系统架构中广泛存在,他将多个子系统的认证体系打通,实现了一个入口多处使用,而在架构单点登录时,也会遇到一些小问题,在不同的应用环境中可以采用不同的单点登录实现方案来满足需求。我将以我所遇到的应用环境以及在其中所经历的各个阶段与大家分享,若有不足,希望各位不吝赐教。 一、共享Session 共享Session可谓是实现单点登录最直接、最简单的方式。将用户认证信息保存于Session中,即以Session内存储的值为用户凭证,这在单个站点内使用是很正常也很容易实现的,而在用户验证、用户信息管理与业务应用分离的场景下即会遇到单点登录的问题,在应用体系简单,子系统很少的情况下,可以考虑采用Session共享的方法来处理这个问题。 这个架构我使用了基于Redis的Session共享方案。将Session存储于Redis上,然后将整个系统的全局Cookie Domain设置于顶级域名上,这样SessionID就能在各个子系统间共享。 这个方案存在着严重的扩展性问题,首先,ASP.NET的Session存储必须为SessionStateItemCollection对象,而存储的结构是经过序列化后经过加密存储的

PHP 单点登录SSO实现方式详解

╄→гoц情女王★ 提交于 2019-12-07 05:03:19
SSO( Single Sign On ),即单点登录,是一种控制多个相关但彼此独立的系统的访问权限, 拥有这一权限的用户可以使用单一的ID和密码访问某个或多个系统从而避免使用不同的用户名或密码,或者通过某种配置无缝地登录每个系统 。 对于大型系统来说使用单点登录可以减少用户很多的麻烦。就拿百度来说吧,百度下面有很多的子系统——百度经验、百度知道、百度文库等等,如果我们使用这些系统的时候,每一个系统都需要我们输入用户名和密码登录一次的话,我相信用户体验肯定会直线下降。 与 SSO 交互的2个元素:1. 用户,2. 系统,它的特点是: 一次登录,全部访问 。SSO 是访问控制的一种,控制用户能否登录,即验证用户身份,而且是所有其它系统的身份验证都在它这里进行,从整个系统层面来看 SSO ,它的核心就是这3个元素了:1. 用户,2. 系统,3. 验证中心。 1、同一个域但不同的子域如何进行单点登录 假如我们的站点是按照下面的域名进行部署的: sub1.onmpw.com sub2.onmpw.com 这两个站点共享同一域 onmpw.com 。 默认情况下,浏览器会发送 cookie 所属的域对应的主机。也就是说,来自于 sub1.onmpw.com 的 cookie 默认所属的域是 .sub1.onmpw.com 。因此, sub2.onmpw.com 不会得到任何的属于 sub1

单点登录SSO的实现方式

流过昼夜 提交于 2019-12-07 05:03:09
这个文章我们来讨论一下单点登录SSO的一些实现方式,其中包括对session和cookie的一些讨论。 一、 我们知道http协议是无状态的协议,也就是说一次请求对应一次响应,不和这次请求的上一次和下一次请求产生关联。那么这样就有一个问题,比如说,我们想实现一个购物车,我们往购物车中添加商品,每次刷新发现上一次添加的商品不见了,每次购物车里都是这次添加的商品,前面添加的不见了。为什么?就是因为http是无状态协议,它压根不知道你上一次往购物车里添加了什么商品。那么我们要怎么做才能让购物车保存我们前面添加的商品?那么,我们首先要让服务器知道”你就是你“。 举个例子,比如说现在有两个人user1,user2在往购物车里添加东西。user1添加了A,B商品,user2添加了C,D商品,此时user1想看看自己到底往购物车里放了什么商品,于是user1点了一下购物车的图标,服务器收到请求,有个用户要查看购物车的商品,要把购物车的商品返回给用户。那么到底是返回user1的还是user2的呢?也就是说服务器凭什么知道这次请求来自user1(把user1的购物商品返回)呢? 那么是不是说我们让我们的浏览器和服务器之间通过一个凭证来通信就可以解决。还是那上面的例子来说。比如user1登录了这个购物网站,服务器收到了这个请求,然后告诉user1说我给你一个凭证(card1)