SSO的幾種跨域方案

在此只是記錄一下本身在嘗試SSO跨域實現的過程當中學到的幾種跨域方案,不包含任何例子和具體的實現方法。nginx

 

最近在嘗試SSO的跨域,看了好多資料,而後本身記錄了一下能夠實現的方法:ajax

 

①跳轉全部站點設置cookie跨域

 

除了①,其他的都是以一個主站點將 ticket 保存到該站點的域下,其他的域經過不一樣的方法來獲取主域下的cookie安全

②主域(頁面重定向):
優勢:
一、中間域站點能夠設置爲 https ,保障傳輸安全性
缺點:
一、有重定向動做,用戶體驗很差
二、若是用 https ,接入門檻高cookie

 

③JSONP:
優勢:
一、輕量級,ajax封裝,使用方便,Json 格式通用
缺點:
一、callback 參數注入,存在XSS漏洞
二、資源訪問未受限制 (可用refer做受權設置,但效果頗有限)
三、只能 Get 請求dom

 

④iframe + window.name
優勢:post

缺點:
一、傳值只能是字符串的形式
二、傳值有大小限制,通常最大是2Mspa

 

⑤iframe + document.domain
優勢:
缺點:
一、兩個域必須在同一基礎域代理

 

 

4月24日,與Alex討論後,從Alex那裏學到了兩個方法server

⑥模擬表單post提交

優勢:

一、表單post提交設置cookie不受同源策略限制

缺點:

一、接收方的接口設置了cookie後,返回的是302,必然會把提交方的頁面重定向,並且這個重定向的地址也是由接收方返回的時候一併返回的。意思就是,提交方只能控制post動做,後續的動做都是由接收方來操縱。

 

⑦ nginx 反向代理(Alex比較傾向的方法,未驗證)

方法:

服務端提供接口,讀取和設置本域的cookie

客戶端訪問服務端的接口經過 nginx 的反向代理訪問(如 www.clientA.com/server/setcookie.do)。我的理解爲,這是客戶端至關於訪問自身站點的一個虛擬目錄,而後 nginx 把這個請求轉發到了 服務端。

 

⑧ CORS

 

2017-04-25 18:03  建立

  先簡單記錄下

相關文章
相關標籤/搜索