簡單的四種方式單點登陸實現(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

相關文章
相關標籤/搜索