keySAML 認証

この機能は次によって開発されています yu-i-i/overleaf-ceparrow-up-right。ここでは設定のためのいくつかのドキュメントを提供します。

設定

内部的に、Overleaf の SAML モジュールは passport-samlarrow-up-right ライブラリを使用しており、以下の多くの設定オプションは 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_namelast_name フィールドが更新され、/user/settings のユーザー詳細フォームがオフになります。 /user/settings ページ。

  • OVERLEAF_SAML_ENTRYPOINT (必須)

    • SAML アイデンティティサービスのエントリポイント URL。

      • 例: https://idp.example.com/simplesaml/saml2/idp/SSOService.php

      • Azure の例: 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_CERT

    • IdP が受信する SAML リクエストの署名を検証できるように、認証リクエストに埋め込むために使用する公開署名証明書を含むファイルへのパス。戦略が metadata endpointarrow-up-right で設定され、 OVERLEAF_SAML_PRIVATE_KEYが構成されている場合に必要です。証明書のローテーションをサポートするために、証明書へのパスの JSON 配列を提供できます。配列を提供する場合、配列の最初のエントリは現在の OVERLEAF_SAML_PRIVATE_KEYと一致するべきです。配列の追加エントリは、既存の変更前に将来の証明書を IdP に公開するために使用できます。 OVERLEAF_SAML_PRIVATE_KEY.

  • OVERLEAF_SAML_PRIVATE_KEY

    • auth リクエストに署名するために passport-saml によって使用される、対応する PEM 形式の秘密鍵を含むファイルへのパス。 OVERLEAF_SAML_PUBLIC_CERT は署名に使用されます。

  • OVERLEAF_SAML_DECRYPTION_CERT

  • 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_MS

    • OnBefore および NotOnOrAfter のアサーション条件の有効性タイムスタンプをチェックする際に、クライアントとサーバー間で許容されるずれのミリ秒単位の時間。-1 に設定するとこれらの条件チェックを完全に無効にします。デフォルトは 0 です。

  • OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEX

    • AttributeConsumingServiceIndex レスポンスにどの属性セットを付与するかを IdP に指示するために AuthnRequest に追加する属性(linkarrow-up-right).

  • 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にすることでパスワード不要のログインなどの追加のコンテキスト( true urn: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 によって署名されていることを期待します。両方のオプションが

    • の場合、少なくともアサーションまたはレスポンスのいずれか一方が署名されている必要があります。 true OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS falseSAML リクエストのために生成された 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_FIELDOVERLEAF_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.isAdminfalseに設定されます。これらの変数のいずれかが設定されていない場合、管理者ステータスは Launchpad での管理者ユーザー作成時にのみ true に設定されます。

アイデンティティプロバイダーのメタデータ

現在の Overleaf CE のバージョンにはサービスプロバイダーメタデータを取得するエンドポイントが含まれています: http://my-overleaf-instance.com/saml/meta

アイデンティティプロバイダーは Overleaf サーバーを「サービスプロバイダー」として認識するように設定する必要があります。これを行う方法についてはご使用の SAML サーバーのドキュメントを参照してください。

以下は適切なサービスプロバイダーメタデータの例です:

chevron-rightol-meta.xmlhashtag

証明書、 AssertionConsumerService.Location, SingleLogoutService.LocationEntityDescriptor.entityID に注意して、IdP の設定で適切に設定するか、メタデータファイルを IdP 管理者に送ってください。

chevron-rightサンプル variables.env ファイル(最小)hashtag

最終更新