單點登入常見問題

1. 概述

1.1 版本

FineBI伺服器版本
6.0

1.2 應用場景

本文介紹單點登入中,常見的問題及排查步驟。

2. 谷歌瀏覽器單點登入失敗

問題描述:

谷歌瀏覽器 80 版本及以上單點登入失敗,跳轉到登入頁,其他瀏覽器正常。

原因分析:

Chrome80.0及以上版本瀏覽器修改了安全策略,預設 SameSite 策略不允許 cookie 跨站傳送,因此單點登入會失敗。

2.1 https解決方案

2.1.1 非維運平台部署的帆軟應用

對於非維運平台部署的帆軟應用,且工程版本為11.0.4及之後,

若已升級工程為 https,可直接使用產品內建HTTPS_SameSite_跨域策略,無需任何操作。

https 設定跨域單點登入後,可直接實現跨站單點登入。

2.1.2 維運平台部署的帆軟應用

1)下載並解壓,獲取配置檔案CORS.conf:CORS.zip

2)將CORS.conf上傳到帆軟應用的/nginx外掛目錄/conf/custom目錄中。

  • 如不存在該目錄,請手動建立,並賦予足夠的讀寫權限

  • 如不清楚外掛目錄位置,可透過匯出部署資訊找回,詳情請參見:匯出專案部署資訊

3)登入維運平台,選擇指定專案,點選「維護>組件管理」,重啟nginx組件。

4)重啟解析配置時,會自動載入配置檔案CORS.conf,將內容合併到nginx.conf檔案的location /  ${APP_PATH}塊內,即可實現跨站單點登入。

2.2 http解決方案

注:本節方案配置比較複雜,推薦將工程升級為 https 後,再參考本文2.1節優化。

解決方案一:統一主域名

參考下方跨站說明,保證兩個工程的頂層領域名稱、次頂層領域名稱相同,比如 a.b.com 和 c.b.com,「.com」頂級,「b」是次頂級。
舉例:bbs.fanruan.com、help.fanruan.com,頂層領域名稱均為 .com,次級域名均為 fanruan,這樣的兩個工程則不會出現此問題。

跨站說明:

跨站是用 Public Suffix List 域名後綴列表 來判斷的。

兩個 URL ,頂層領域名稱和次頂層領域名稱內容(後面用 public suffix+1 指代)相同,為同站:

  • 頂層領域名稱:從 Public Suffix List 域名後綴列表中匹配的最長後綴長度。

  • 次頂層領域名稱:頂層領域名稱前面的欄位。

注:頂層領域名稱列表可參見:頂層領域名稱列表

比如 www.sina.com.cn 的 public suffix+1 是 sina.com.cnwww.sohu.com.cn 的 public suffix+1 是 sohu.com.cn, 兩者不一樣,所以不屬於同一個地點。

再比如 nanzhuang.taobao.com 的 public suffix+1 是 taobao.comnvzhuang.taobao.com 的 public suffix+1 也是 taobao.com,那麼它倆就是同一個地點的。

解決方案二:配置代理

可透過代理,將帆軟和第三方系統配置到同一域名下,第三方系統裏面配置的報表連結需要改成走代理的連結。即可繞過samesite。

2.3 臨時解決方案

該臨時方案是透過修改谷歌的設定解決的,每台存取工程的電腦都需要修改谷歌的設定,使用體驗差,不太推薦;推薦使用2.1節方案。

該臨時方案適用於所有谷歌核心瀏覽器,如新 edge(存取edge://flags/)、360 安全瀏覽器(存取se://flags/)等,但不適用於 91 及以上版本的谷歌核心瀏覽器。

在谷歌瀏覽器地址欄中輸入:chrome://flags/,然後在搜尋框輸入「SameSite」搜尋並找到「SameSite by default cookies」選項,右側按鈕選擇「Disabled」。

設定完成後,需要重啟谷歌瀏覽器,方可生效。如下圖所示:

3. IE瀏覽器單點登入失敗

問題描述:

使用者在 IE 瀏覽器上單點登入失敗,但開啟 IE 瀏覽器的除錯模式又可以正常單點登入。

原因分析:

單點登入程式碼中使用console.log()列印 debug 資訊,在 IE 瀏覽器中該程式碼是預設不執行的,需要在 F12 開啟除錯工具才有效。

解決方案:

把列印日誌的程式碼遮蔽掉即可正常登入。如下圖所示:

4. IE11浏览器单点登录失败

问题描述:

iframe 跨域单点登录在 IE11 浏览器上失败。

解决方案:

1)由于 IE11 没有 attachEvent 这个属性,需要添加一个 meta 标签来设置浏览器的默认兼容模式,通过在 html 的 head 标签中加入下面代码:

<meta http-equiv="X-UA-Compatible" content="IE=10" />

 meta 标签用来设置浏览器的默认兼容模式为 IE10,这样就可以依旧使用 attachEvent 属性。

2)另外 IE11 浏览器需要将报表服务器的地址加入到受信任的站点中,如下图所示:

比如工程地址为http://172.17.0.20:37799/webroot/decision,配置如下图所示:

5. Safari瀏覽器跨域單點登入失敗

問題描述:

跨域情況下,使用 Safari 瀏覽器或其他 H5 方式在行動端預覽報表時,iOS 裝置單點登入失敗,Android 裝置正常。

注:請確認行動端登入頁面是原生頁面還是 H5 頁面,如果是原生頁面,可直接使用原生的單點登入方式,這個不涉及跨域 。

       如果登入頁面也是 H5 的,只能用標準的 JavaScript 單點登入。

原因分析:

由於 cookie 問題導致單點失敗。

Safari 瀏覽器保全等級比較高,跨域情況下,預設不允許第三方 Cookie 寫入,或者只允許存取過的網站寫入。

解決方案:

1)針對使用者端瀏覽器,設定允許 Cookie 寫入即可。如下圖所示:

2)針對行動端 App 裏的容器(比如 WebView),使用者有自己的 App 框架前提下,需要使用者自己的研發人員加兩行程式碼,設定成接受 Cookie 即可。如下圖所示:

程式碼如下所示:

NSHTTPCookieStorage *cook = [NSHTTPCookieStorage sharedHTTPCookieStorage];
[cook setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];

6. 內網環境下單點登入失效

問題描述:

內網環境下,單點登入失敗。

原因分析:

單點登入程式碼中,若引用了 JS 檔案,內網環境下是無法生效的。如下圖所示:

解決方案:

下載 JS 檔案到本地並修改對應的路徑即可。以 Ajax 跨域非同步單點登入 為例:

1)存取右側連結: 各版本 jquery下載 ,下載程式碼中對應的 jquery 檔案。

2)將所下載檔案中的jquery.min.js檔案放到%BI_HOME%\webapps\webroot下,如下圖所示:

3)修改 HTML 檔案中jquery.min.js檔案的路徑,如下圖所示:

6. 保持登入狀態

問題描述:

單點登入不能勾選保持登入狀態,有時會在登入一段時間後自動跳出。

原因分析:

單點登入API:http://localhost:8080/webroot/decision/login/cross/domain?fine_username=XX&fine_password=XX&validity=-2&callback=

validity 值:

  • -2:表示保持登入,保持登入就是 14 天的時間。

  • 非-2:非保持登入,時長跟隨:「管理系統>系統管理>登入>登入逾時時間」

解決方案:

如果希望單點登入時保持登入,將參數 validity 的值改為 -2 即可

如果希望不保持長期登入,可進入數據決策系統,在平台「系統管理>登入」處統一設定「登入逾時時間」,如下圖所示:

7. 控制台顯示登入成功但平台仍需登入

問題描述:

在 IE 瀏覽器下開啟控制台顯示單點登入成功,但是存取決策系統時依舊會提示需要登入,如下圖所示:

原因分析:

IE 隱私等級過高,這樣會導致它傳送單點登入請求後,平台傳回的 cookie 寫不進去,而其他瀏覽器是默許的。

解決方案:

將 IE 隱私等級調整到低或以下。

8. 特殊密碼單點登入失敗

問題描述:

使用者密碼包含特殊字元,例如hgyusdre+CVsdej+HU09Y6y==,單點登入失效。但如果在登入頁輸入帳號密碼,登入成功。

原因分析:

當密碼存在特殊字元,透過單點登入API直接存取會失敗,需要對密碼進行轉碼。

解決方案:

1)開啟瀏覽器控制台,以谷歌瀏覽器為例,在控制台中輸入encodeURIComponent("密碼"),可將密碼進行轉碼。如下圖所示:

2)單點登入API使用轉碼的密碼進行存取。

附件列表


主题: 單點整合
已经是第一篇
已经是最后一篇
  • 有帮助
  • 没帮助
  • 只是浏览
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙