authentication 模組)處理。它沒有背景工作,也沒有獨立的 pod。請依照 SAML 身分驗證設定身分提供者(IdP),再依下列方式將設定值與 IdP 憑證放入 Kubernetes。
各元件的執行位置
設定
1
在 IdP 註冊 Overleaf
goauthentik 逐步教學說明了這些設定的位置。
2
將 IdP 憑證放入 Secret overleaf-certs
Toolkit 從 若該 Secret 已存在,請改為將檔案加入其中:刪除後以所有
data/overleaf/certs/ 讀取憑證。在 Kubernetes 上,憑證來自 Secret overleaf-certs,並依照憑證與其他檔案中的說明掛載於 /var/lib/overleaf/certs:--from-file 重新建立,或使用 kubectl -n overleaf edit secret overleaf-certs。OVERLEAF_SAML_IDP_CERT 接受一個路徑,或在憑證輪替期間接受路徑的 JSON 清單。它不接受 PEM 文字本身。3
將設定加入 ConfigMap
30-config.yaml (additions)
OVERLEAF_SAML_* 設定都列在環境變數中。它們全部都放入 ConfigMap:沒有任何一項本身是機密。金鑰檔案(OVERLEAF_SAML_PRIVATE_KEY、OVERLEAF_SAML_DECRYPTION_PVK)放入 overleaf-certs,而 ConfigMap 則存放其路徑。4
套用並重新啟動
overleaf-certs 中的新憑證同樣需要重新啟動。多個副本
IdP 會以跨站POST 將使用者送回 ACS URL。瀏覽器不會隨此請求送出 SameSite=Lax 的 Cookie,因此該請求既不會攜帶 Overleaf 的工作階段 Cookie,在 Chrome 與 Edge 中也不會攜帶負載平衡器的黏性 Cookie,因而可能抵達任何一個副本。在預設設定下這並無影響:收到請求的副本會在 Redis 中建立工作階段,之後負載平衡器就會將使用者固定在該副本上。
在 Kubernetes 上的測試
以 goauthentik 作為 IdP(HTTP-POST 繫結、已簽署的 assertion 與回應),在 Kubernetes 1.37 上以三個副本置於 HAProxy 之後,我們針對 SAML 的端對端測試全數通過(19 個案例):從 launchpad 建立的第一位管理員透過 SAML 登入、使用overleaf-certs 中的 IdP 憑證登入、建立帳號並再次登入、依群組對應管理員以及不使用對應、每次登入時更新名稱與管理員旗標、透過 IdP 登出、SAML 帳號的密碼規則,以及已停權的帳號。OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO 維持預設值。
問與答
透過 SAML 登入時立即顯示「Something went wrong」
透過 SAML 登入時立即顯示「Something went wrong」
回答:SAML 策略載入失敗。pod 仍會進入就緒狀態,因此請查看每個 pod 的 web 日誌:常見原因:
OVERLEAF_SAML_IDP_CERT 指向不在 overleaf-certs 中的檔案、布林值不是 "true" 或 "false",或 JSON 無效。若 EXTERNAL_AUTH 列出多種方式,此類錯誤也會關閉排在 SAML 之後的方式(依序為 ldap、saml、oidc)。需要讓 IdP 連線至 Overleaf,還是讓 Overleaf 連線至 IdP?
需要讓 IdP 連線至 Overleaf,還是讓 Overleaf 連線至 IdP?
回答:就登入與登出而言,兩者皆不需要:IdP 與 Overleaf 只會透過使用者的瀏覽器交換訊息。只有在您以中繼資料 URL 設定 IdP 時,IdP 才會下載
${OVERLEAF_SITE_URL}/saml/meta。
