1.2 問題描述
谷歌瀏覽器 80 版本及以上單點登入失敗,跳轉到登入頁,其他瀏覽器正常。
由於 cookie 問題導致單點失敗。。
由於 Chrome 最新瀏覽器最新版本(80.0)及以上修改了安全策略,預設 SameSite 策略不允許 cookie 跨站傳送,因此單點登入會失敗。
https 存取:需要單點到的工程安裝 HTTPS_SameSite_跨域插件,重啓工程
Chrome 最新瀏覽器最新版本(80.0)及以上版本,不允許 cookie 跨站傳送,會導致單點登入失敗。
跨站的判斷依據:
跨站是用 Public Suffix List 域名後綴列表 來判斷的。
兩個 URL ,頂層領域名稱和次頂層領域名稱內容(後面用 public suffix+1 指代)相同,為同站:
頂層領域名稱:從 Public Suffix List 域名後綴列表中匹配的最長後綴長度。
次頂層領域名稱:頂層領域名稱前面的欄位。
注:頂層領域名稱列表可參見:頂層領域名稱列表
範例:
比如 www.sina.com.cn 的 public suffix+1 是 sina.com.cn,www.sohu.com.cn 的 public suffix+1 是 sohu.com.cn, 兩者不一樣,所以不屬於同一個地點;再比如 nanzhuang.taobao.com 的 public suffix+1 是 taobao.com,nvzhuang.taobao.com 的 public suffix+1 也是 taobao.com,那麼它倆就是同一個地點的。
注1:這一方案同樣適用於其他谷歌核心瀏覽器,如新 edge(存取edge://flags/)、360 安全瀏覽器(存取se://flags/)等,但不適用於 91 及以上版本的谷歌核心瀏覽器。
注2:本章提供方案是透過修改谷歌的設定解決的,每臺存取的電腦都需要修改谷歌的設定,使用體驗差,不太推薦;推薦參考本文第四章方案。
在谷歌瀏覽器位址欄中輸入:chrome://flags/,然後在搜尋框輸入「SameSite」搜尋並找到
「SameSite by default cookies」選項,右側按鈕選擇「Disabled」,重啓谷歌瀏覽器即可。如下圖所示:
方案一:不跨站
參見本文第二章跨站說明。
保證兩個工程的頂層領域名稱、次頂層領域名稱相同,比如 a.b.com 和 c.b.com,「.com」頂級,「b」是次頂級。
舉例:bbs.fanruan.com、help.fanruan.com,頂層領域名稱均為 .com,次級域名均為 fanruan,這樣的兩個工程則不會出現此問題。
方案二:升級為 https
升級為 https 後,參考本文 4.2 節內容。
插件下載請點選:HTTPS_SameSite_跨域插件
插件安裝方法請參見:插件管理
設定跨域單點登入後,需要單點到的工程安裝「HTTPS_SameSite_跨域插件」後,重啓工程,即可實現跨站單點登入。
谷歌最新的 91 版本無法手動關閉 samesite ,samesite 屬性全都會預設開啓,單點全都會失敗,但是「HTTPS_SameSite_跨域插件」正常生效。