关键词:
1.SSO分类
根据实现的域不同,可以把SSO分为同域SSO、同父域SSO、跨域SSO三种类型。
2.SSO实现原理
a.打开统一的登录界面
b.登录,同时向服务器写入Cookie
c.进入其他应用
d.判断是否有对应的Cookie
如果没有则进入统一的登录界面
如果有则进入下一步验证
e.服务器验证Cookie的有效性
如果有效则进入下一步
如果无效则打开统一的登录界面
f.成功进入应用页面
3.同域SSO的实现
a.定义一个公共的登录页面
登录页面是通过访问不同路径的action跳转而来。
在页面中需要用户名、密码和跳转的url。根据不同的访问路径,确定需要跳转的不同地址,所以用myurl隐藏域来接收不同的跳转地址。
<body> <center> <h1>请登录</h1> <form action="/SSO/sso/doLogin.action" method="post"> <span>用户名:</span><input type="text" name="username"> <span>密码:</span><input type="password" name="password"> <input type="hidden" name="myurl" value="${myurl }"> <input type="submit" value="提交"/> </form> </center> </body>
b.定义公共登录后台
进入方法后进行用户名密码的验证,如果用户名密码正确,则根据规则生成一个Cookie保存,并跳转到对应的myurl中。
public class SSOAction extends ActionSupport { private String username; private String password; private String myurl; public String doLogin(){ boolean result= Check.checkLogon(username,password); if(result){ Cookie cookie = new Cookie("ssocookie","sso"); cookie.setPath("/"); HttpServletResponse response = ServletActionContext.getResponse(); response.addCookie(cookie); return SUCCESS; } return null; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getMyurl() { return myurl; } public void setMyurl(String myurl) { this.myurl = myurl; }
配置文件如下:
<package name="sso" namespace="/sso" extends="struts-default"> <action name="doLogin" class="com.imooc.sso.SSOAction" method="doLogin"> <result name="success" type="redirect">${myurl}</result> </action> </package>
c.定义两个同域下的不同访问路径
如demo1和demo2两个访问路径,需要跳转的myurl不同。进入访问路径后,先判断Cookie的有效性,如果Cookie有效则直接进入访问页面,如果Cookie无效则跳转到公共的登录页面。
Demo1Action:
public class Demo1Action extends ActionSupport { private String myurl; public String main(){ HttpServletRequest request = ServletActionContext.getRequest(); if(Check.checkCookie(request)){ return SUCCESS; } myurl = "/demo1/main.action"; return LOGIN; } public String getMyurl() { return myurl; } public void setMyurl(String myurl) { this.myurl = myurl; }
Demo2Action:
private String myurl; public String main(){ HttpServletRequest request = ServletActionContext.getRequest(); if(Check.checkCookie(request)){ return SUCCESS; } myurl = "/demo2/main.action"; return LOGIN; } public String getMyurl() { return myurl; } public void setMyurl(String myurl) { this.myurl = myurl; }
配置文件如下:
<package name="demo1" namespace="/demo1" extends="struts-default"> <action name="main" class="com.imooc.demo1.Demo1Action" method="main"> <result name="success" >/demo1.jsp</result> <result name="login" >/login.jsp</result> </action> </package> <package name="demo2" namespace="/demo2" extends="struts-default"> <action name="main" class="com.imooc.demo2.Demo2Action" method="main"> <result name="success" >/demo2.jsp</result> <result name="login" >/login.jsp</result> </action> </package>
demo1.jsp与demo2.jsp为两个不同路径最终登录成功需要访问的页面。
到此,一个简单的同域SSO单点登录功能就已经实现。
根据demo1的访问路径第一次访问时,没有对应的Cookie,则跳转到公共的登录页面进行登录。公共登录页面验证账号有效性后,生成Cookie,并跳转到demo1的访问页面(demo1.jsp);此时根据demo2的访问路径进行访问时,判断Cookie生效,则直接进入demo2的访问页面(demo2.jsp)。
cas实现sso单点登录原理
1. CAS 简介1.1. WhatisCAS ?CAS ( CentralAuthenticationService )是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录 查看详情
单点登录sso的实现原理
单点登录SSO(SingleSignOn)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴... 查看详情
单点登录sso的实现原理(转)
单点登录SSO(SingleSignOn)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴... 查看详情
第十篇单点登录原理和jwt实现(代码片段)
单点登录原理及JWT实现波波烤鸭一、单点登录效果 首先我们看通过一个具体的案例来加深对单点登录的理解。案例地址:https://gitee.com/xuxueli0323/xxl-sso?_from=gitee_search把案例代码直接导入到IDEA中 然后分别修改下server... 查看详情
第十篇单点登录原理和jwt实现(代码片段)
单点登录原理及JWT实现波波烤鸭一、单点登录效果 首先我们看通过一个具体的案例来加深对单点登录的理解。案例地址:https://gitee.com/xuxueli0323/xxl-sso?_from=gitee_search把案例代码直接导入到IDEA中 然后分别修改下server... 查看详情
sso单点登录
单点登录SSO的实现原理单点登录SSOSSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析 查看详情
单点登录实现方案
单点登陆实现方案设计整体流程:设计思路:单点登录涉及?sso?认证中心与众子系统,子系统与?sso?认证中心需要通信以交换令牌、校验令牌及发起注销请求,因而子系统必须集成?sso?的客户端,sso?认证中心则是?sso?服务端,整个... 查看详情
sso单点登录的原理详解,及shiro同时支持session和jwttoken两种认证方式,和session和jwt整合方案
1. 单点登录是什么?单点登录全称SingleSignOn(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分。 2. 单点登录... 查看详情
sso单点登录的发展由来以及实现原理
单点登录以及权限,在很早之前都有写过,不过都比较简单,今天就具体说一下,以及下一步要做的1、web单系统应用早期我们开发web应用都是所有的包放在一起打成一个war包放入tomcat容器来运行的,所有的功能,所有的业务,... 查看详情
sso单点登录,单点登录原理图,单点登录图解,单点登录
sso单点登录,单点登录原理图,单点登录图解,单点登录 ==============================?Copyright 蕃薯耀2017年11月20日http://www.cnblogs.com/fanshuyao/ ==============================?Copyright 蕃薯耀2017年11月20日ht 查看详情
sso单点登录实现方案
最近打算做个项目,需要用到单点登录,搜了看了一下资料找到一种单点登录方案,特此记录。一、实现原理 将登录系统单独摘出来,做成一个登录子系统。请求登陆时候访问这个子系统,当登陆验证通过的时... 查看详情
单点登录基本原理
...可以在一个系统登录,其他系统就不用登录了呢?这就是单点登录要解决的问题。单点登录英文全称SingleSignOn,简称就是SSO。它的解释是:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。 image如... 查看详情
单点登录实现原理和单点登录服务器设计
sso单点登录是什么java实现SSO什么是SSOSSO(SingleSignOn)单点登录是实现多个系统之间统一登录的验证系统,简单来说就是:有A,B,C三个系统,在A处登录过后,再访问B系统,B系统就已经处于了... 查看详情
springsecurity基于oauth2的sso单点登录怎样做?一个注解搞定
参考技术A单点登录顾名思义就是在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,免除多次登录的烦恼。本文主要介绍同域和跨域两种不同场景单点登录的实现原理,并使用SpringSecurity来实现一个最简... 查看详情
单点登录实现原理和单点登录服务器设计
sso单点登录是什么java实现SSO什么是SSOSSO(SingleSignOn)单点登录是实现多个系统之间统一登录的验证系统,简单来说就是:有A,B,C三个系统,在A处登录过后,再访问B系统,B系统就已经处于了... 查看详情
cas实现单点登录sso
一CAS是什么?为Web应用系统提供一种可靠的单点登录解决方法的一个项目,是通过共享cookie实现的。二CAS原理 CAS是由CASServer和CASClient组成:1.架构图: TGC:存放用户身份认证凭证的cookieST:服务票据,... 查看详情
ebs单点登录sso
参考技术A单点登录是指在多个业务应用系统中,用户只需要登陆一次,就可以访问所有有权限的业务应用系统。在企业内部使用单点登录还是挺常见的,记录一下单点登录是什么主要是发现OracleEBS也能单点登录,抽空特意了解... 查看详情
单点登录(sso)原理(代码片段)
在整个SSO流程当,有两个流程非常重要: 第一个是用户没有登录系统到登录系统的过程; 第二是用户在一个系统当中已经登录(例如在OA系统中登录了),但又想进入另一个系统(例如进入PRO系统)的过程一、用户没有... 查看详情