authentication モジュール)が処理します。バックグラウンドジョブや別の Pod はありません。ID プロバイダー(IdP)は SAML 認証 のとおりに設定し、その値と IdP 証明書を以下の手順で Kubernetes に設定します。
各処理の実行場所
設定
1
IdP に Overleaf を登録する
これらの設定場所は goauthentik の手順 で確認できます。
2
IdP 証明書を Secret overleaf-certs に格納する
Toolkit は証明書を Secret がすでに存在する場合は、代わりにファイルを追加します。すべての
data/overleaf/certs/ から読み込みます。Kubernetes では、証明書とその他のファイル で説明しているように、/var/lib/overleaf/certs にマウントされる Secret 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 バインディング、署名付きアサーションとレスポンス)、Kubernetes 1.37 上で HAProxy の背後に 3 つのレプリカを配置した構成で、SAML のエンドツーエンドテストに合格しました(19 ケース)。対象は、launchpad で作成した最初の管理者の SAML 経由でのログイン、overleaf-certs の IdP 証明書を使ったログイン、アカウントの作成と再ログイン、グループによる管理者マッピングとマッピングなしの場合、ログインごとの名前と管理者フラグの更新、IdP 経由のログアウト、SAML アカウントのパスワードルール、停止されたアカウントです。OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO はデフォルトのままにしました。
Q&A
SAML 経由でログインするとすぐに「Something went wrong」と表示される
SAML 経由でログインするとすぐに「Something went wrong」と表示される
回答:SAML ストラテジーの読み込みに失敗しています。Pod はそれでも Ready になるため、各 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 は、ユーザーのブラウザを介してのみメッセージをやり取りします。IdP をメタデータ URL で設定した場合にのみ、IdP が
${OVERLEAF_SITE_URL}/saml/meta をダウンロードします。
