單點登陸(Single Sign On),簡稱爲 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,用戶只須要登陸一次就能夠訪問全部相互信任的應用系統。java
在作單點登陸以前觀察了不少網站,好比微軟中國登陸跳轉到微軟美國統一登陸頁面再跳轉過來,淘寶天貓登陸,京東登陸。json
登陸成功以後經過 url帶token參數跳轉 好比阿里雲登陸萬網的方式跨域
在js裏獲取登陸服務器的token安全
jQuery.getScript("http://localhost:8081",function(){console.log(token);});
登陸成功以後 跳轉到 (一站登陸把全站都登陸上)服務器
<script src='b.com/login?uid=xxxx&token=xxxxx'></script> <script src='c.com/login?uid=xxxx&token=xxxxx'></script>
登陸成功以後 跳轉到 (一站登陸把全站都登陸上)
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請求方式 這裏就不作介紹,有興趣去搜索一下