简单的四种方式单点登陆实现(SSO)

    单点登陆(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只须要登陆一次就能够访问全部相互信任的应用系统。java

在作单点登陆以前观察了不少网站,好比微软中国登陆跳转到微软美国统一登陆页面再跳转过来,淘宝天猫登陆,京东登陆。json

方法1

登陆成功以后经过 url带token参数跳转  好比阿里云登陆万网的方式跨域

方法2

 在js里获取登陆服务器的token安全

jQuery.getScript("http://localhost:8081",function(){console.log(token);});

方法3

登陆成功以后 跳转到  (一站登陆把全站都登陆上)服务器

<script src='b.com/login?uid=xxxx&token=xxxxx'></script>
<script src='c.com/login?uid=xxxx&token=xxxxx'></script>

方法4

登陆成功以后 跳转到  (一站登陆把全站都登陆上)
session

<iframe src="http://www.baidu.com"/>

思路:app

       好比A应用 使用 公共SSO登陆  框架

              A应用先判断自个session是否为空,为空再用方法2js跨域获取SSO的信息,获取到以后再调用 A应用本身存session方法,登陆成功刷新。jsonp

在整个过程考虑一下安全问题就能够了。 网站

以上的几种方式是我本身整理不须要加入复杂比较重的框架的简单SSO实现

用以上的方法必须设置SSO服务端容许跨域

 /**
	 * 公共获取是否登陆
	 * @param
	 * @param httpSessionl
         * @return
         */
	@RequestMapping(value = "/checklogin")
	@ResponseBody
	public String login(HttpSession httpSessionl, HttpServletResponse response){
		response.setHeader("Access-Control-Allow-Origin", "*");//容许全部域名可访问  解决跨域问题 
		response.setHeader("P3P","CP=IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT");//解决IE跨域问题
		Object token1=  httpSessionl.getAttribute("token");
		if(token1!=null){
			return "var isLogin=true;var token='"+token1+"';"; //script调用 返回json格式的数据
		}else{
			return "var isLogin=false";
		}
	}

除了 script方式 还有一种jsonp请求方式 这里就不作介绍,有兴趣去搜索一下

博客地址:http://my.oschina.net/wangnian

相关文章
相关标签/搜索