SAML 認証
この機能は次によって開発されています yu-i-i/overleaf-cep。ここでは設定のためのいくつかのドキュメントを提供します。
設定
内部的に、Overleaf の SAML モジュールは passport-saml ライブラリを使用しており、以下の多くの設定オプションは passport-samlに渡されます。SAML の設定に問題がある場合、期待される設定を把握するために passport-saml の README を読む価値があります。
環境変数 EXTERNAL_AUTH は SAML 認証モジュールを有効にするために必要です。この環境変数はどの外部認証方法が有効化されているかを指定します。この変数の値はリストです。リストに saml が含まれている場合、SAML 認証が有効化されます。
例えば: EXTERNAL_AUTH=ldap saml
SAML 認証方式を使用する場合、ユーザーはアイデンティティプロバイダー(IdP)の認証サイトにリダイレクトされます。IdP がユーザーを正常に認証すると、Overleaf のユーザーデータベースがチェックされ、次を含むレコードがあるか確認されます samlIdentifiers フィールドは次のように構成されます:
samlIdentifiers: [
{
externalUserId: "...",
providerId: "1",
userIdAttribute: "..."
}
]「 externalUserId は IdP サーバーから返されるユーザープロファイル内の userIdAttribute で指定されたプロパティの値と一致する必要があります。
一致するレコードが見つからない場合、データベースは IdP のユーザープロファイル内のメールと一致する主メールアドレスを持つユーザーを検索します:
そのようなユーザーが見つかった場合、
hashedPasswordフィールドはローカル認証を無効にするために削除され、samlIdentifiersフィールドが追加されます。一致するユーザーが見つからない場合、IdP プロファイルのメールアドレスと
samlIdentifiersから新しいユーザーが作成されます。
注意: 現在、サポートされる SAML IdP は 1 つのみです。 providerId フィールドは samlIdentifiers において固定で '1'.
環境変数
OVERLEAF_SAML_IDENTITY_SERVICE_NAMEログインページで使用されるアイデンティティサービスの表示名(デフォルト:
SAML IdP でログイン).
OVERLEAF_SAML_USER_ID_FIELDこの属性の値は Overleaf によって外部ユーザー ID として使用され、デフォルトは
nameID.
OVERLEAF_SAML_EMAIL_FIELDユーザープロファイル内の Email フィールドの名前、デフォルトは
nameID.
OVERLEAF_SAML_FIRST_NAME_FIELDユーザープロファイル内の firstName フィールドの名前、デフォルトは
givenName.
OVERLEAF_SAML_LAST_NAME_FIELDユーザープロファイル内の lastName フィールドの名前、デフォルトは
lastName
OVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGINが設定されている場合(
true)、ログイン時にユーザーのfirst_nameとlast_nameフィールドが更新され、/user/settings のユーザー詳細フォームがオフになります。/user/settingsページ。
OVERLEAF_SAML_ENTRYPOINT(必須)SAML アイデンティティサービスのエントリポイント URL。
例:
https://idp.example.com/simplesaml/saml2/idp/SSOService.phpAzure の例:
https://login.microsoftonline.com/8b26b46a-6dd3-45c7-a104-f883f4db1f6b/saml2
OVERLEAF_SAML_ISSUER(必須)Issuer 名。
OVERLEAF_SAML_AUDIENCE期待される saml レスポンスの Audience、デフォルトは
OVERLEAF_SAML_ISSUER.
OVERLEAF_SAML_IDP_CERT(必須)受信 SAML レスポンスの署名を検証するために使用する、アイデンティティプロバイダーの公開証明書を含むファイルへのパス。IdP に複数の有効な署名証明書がある場合、証明書へのパスの JSON 配列にすることができます。
例(1つの証明書):
/var/lib/overleaf/certs/idp_cert.pem例(複数の証明書):
["var/lib/overleaf/certs/idp_cert.pem", "/var/lib/overleaf/certs/idp_cert_old.pem"]
OVERLEAF_SAML_PUBLIC_CERTIdP が受信する SAML リクエストの署名を検証できるように、認証リクエストに埋め込むために使用する公開署名証明書を含むファイルへのパス。戦略が metadata endpoint で設定され、
OVERLEAF_SAML_PRIVATE_KEYが構成されている場合に必要です。証明書のローテーションをサポートするために、証明書へのパスの JSON 配列を提供できます。配列を提供する場合、配列の最初のエントリは現在のOVERLEAF_SAML_PRIVATE_KEYと一致するべきです。配列の追加エントリは、既存の変更前に将来の証明書を IdP に公開するために使用できます。OVERLEAF_SAML_PRIVATE_KEY.
OVERLEAF_SAML_PRIVATE_KEYauth リクエストに署名するために passport-saml によって使用される、対応する PEM 形式の秘密鍵を含むファイルへのパス。
OVERLEAF_SAML_PUBLIC_CERTは署名に使用されます。
OVERLEAF_SAML_DECRYPTION_CERT復号化のために使用される公開証明書を含むファイルへのパス( metadata endpoint.
OVERLEAF_SAML_DECRYPTION_PVK対応する秘密鍵を含むファイルへのパス(
OVERLEAF_SAML_DECRYPTION_CERTは、受信した暗号化されたアサーションを復号化しようとするために使用されます。
OVERLEAF_SAML_SIGNATURE_ALGORITHMオプションでリクエストを署名するための署名アルゴリズムを設定します。有効な値は 'sha1'(デフォルト)、'sha256'(推奨)、'sha512'(最も安全、IdP がサポートするか確認してください)です。
OVERLEAF_SAML_ADDITIONAL_PARAMSすべてのリクエストに追加する追加のクエリパラメータの JSON 辞書。
OVERLEAF_SAML_ADDITIONAL_AUTHORIZE_PARAMS'authorize' リクエストに追加する追加のクエリパラメータの JSON 辞書。
例:
{"some_key": "some_value"}
OVERLEAF_SAML_IDENTIFIER_FORMATアイデンティティプロバイダーに要求する Name identifier のフォーマット(デフォルト:
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress)。もしurn:oasis:names:tc:SAML:2.0:nameid-format:persistentを使用する場合は、OVERLEAF_SAML_EMAIL_FIELD環境変数が定義されていることを確認してください。もしurn:oasis:names:tc:SAML:2.0:nameid-format:transientが必要な場合は、OVERLEAF_SAML_ID_FIELD環境変数も定義する必要があります。例えばユーザーのメールアドレスに設定できます。
OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MSOnBefore および NotOnOrAfter のアサーション条件の有効性タイムスタンプをチェックする際に、クライアントとサーバー間で許容されるずれのミリ秒単位の時間。-1 に設定するとこれらの条件チェックを完全に無効にします。デフォルトは 0 です。
OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEXAttributeConsumingServiceIndexレスポンスにどの属性セットを付与するかを IdP に指示するために AuthnRequest に追加する属性(link).
OVERLEAF_SAML_AUTHN_CONTEXT認証コンテキストを要求するための name identifier フォーマット値の JSON 配列。デフォルト:
["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"].
OVERLEAF_SAML_FORCE_AUTHNが設定されている場合、サービスプロバイダーからの最初の SAML リクエストは、ユーザーが有効なセッションを持っていても IdP に対して再認証を強制するよう指定します。
trueOVERLEAF_SAML_DISABLE_REQUESTED_AUTHN_CONTEXT
が設定されている場合、特定の認証コンテキストを要求しません。例えば、これをが設定されている場合、サービスプロバイダーからの最初の SAML リクエストは、ユーザーが有効なセッションを持っていても IdP に対して再認証を強制するよう指定します。
trueにすることでパスワード不要のログインなどの追加のコンテキスト(trueurn:oasis:names:tc:SAML:2.0:ac:classes:X509)を許可できます。追加コンテキストのサポートは IdP に依存します。OVERLEAF_SAML_AUTHN_REQUEST_BINDING
HTTP-POSTが設定されている場合(
は IdP に対して HTTP POST バインディング経由で認証を要求し、それ以外はデフォルトで HTTP-Redirect になります。OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO
alwaysが設定されている場合、サービスプロバイダーからの最初の SAML リクエストは、ユーザーが有効なセッションを持っていても IdP に対して再認証を強制するよう指定します。
の場合、受信した SAML レスポンスから InResponseTo が検証されます。neverが設定されている場合、サービスプロバイダーからの最初の SAML リクエストは、ユーザーが有効なセッションを持っていても IdP に対して再認証を強制するよう指定します。
の場合、InResponseTo は検証されません(デフォルト)。ifPresentが設定されている場合、サービスプロバイダーからの最初の SAML リクエストは、ユーザーが有効なセッションを持っていても IdP に対して再認証を強制するよう指定します。
の場合、受信した SAML レスポンスに存在する場合にのみ InResponseTo が検証されます。OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED
OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNEDとが設定されている場合、(デフォルト)、Overleaf は SAML アサーション、または SAML 認証レスポンス全体が IdP によって署名されていることを期待します。両方のオプションがの場合、少なくともアサーションまたはレスポンスのいずれか一方が署名されている必要があります。
trueOVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MSfalseSAML リクエストのために生成された Request ID が、SAML レスポンスの
InResponseToフィールドで見られた場合に無効と見なされるまでの有効期限を定義します。デフォルト:28800000(8 時間)。
InResponseToフィールド。デフォルト: 28800000 (8 hours).
OVERLEAF_SAML_LOGOUT_URLログアウトリクエストを呼び出すための基本アドレス(デフォルト:
entryPoint).例:
https://idp.example.com/simplesaml/saml2/idp/SingleLogoutService.php
OVERLEAF_SAML_ADDITIONAL_LOGOUT_PARAMS'logout' リクエストに追加する追加のクエリパラメータの JSON 辞書。
OVERLEAF_SAML_IS_ADMIN_FIELDとOVERLEAF_SAML_IS_ADMIN_FIELD_VALUE両方の環境変数が設定されている場合、ログインプロセスは SAML IdP によって返されたプロファイルが
user.isAdmin = trueに指定された属性を含む場合に更新します。OVERLEAF_SAML_IS_ADMIN_FIELDそしてその値が次と一致するか、配列に次を含む場合OVERLEAF_SAML_IS_ADMIN_FIELD_VALUEまたは配列に含まれる場合OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE、そうでない場合はuser.isAdminはfalseに設定されます。これらの変数のいずれかが設定されていない場合、管理者ステータスは Launchpad での管理者ユーザー作成時にのみtrueに設定されます。
アイデンティティプロバイダーのメタデータ
現在の Overleaf CE のバージョンにはサービスプロバイダーメタデータを取得するエンドポイントが含まれています: http://my-overleaf-instance.com/saml/meta
アイデンティティプロバイダーは Overleaf サーバーを「サービスプロバイダー」として認識するように設定する必要があります。これを行う方法についてはご使用の SAML サーバーのドキュメントを参照してください。
以下は適切なサービスプロバイダーメタデータの例です:
証明書、 AssertionConsumerService.Location, SingleLogoutService.Location と EntityDescriptor.entityID に注意して、IdP の設定で適切に設定するか、メタデータファイルを IdP 管理者に送ってください。
最終更新