Skip to main content
この機能は yu-i-i/overleaf-cep によって開発されました。ここでは設定に関するドキュメントを提供します。

設定

内部的には、Overleaf の OIDC モジュールは passport-openidconnect ライブラリを使用しています。OpenID Connect の設定で問題が発生した場合は、passport-openidconnect の README を読んで、どのような設定が想定されているかを把握しておくとよいでしょう。 OIDC 認証モジュールを有効にするには、環境変数 EXTERNAL_AUTH が必要です。この環境変数は、どの外部認証方式を有効にするかを指定します。この変数の値はリストです。リストに oidc が含まれている場合、OIDC 認証が有効になります。 例:EXTERNAL_AUTH=ldap oidc OIDC 認証方式を使用する場合、ユーザーは ID プロバイダー(IdP)の認証サイトにリダイレクトされます。IdP がユーザーの認証に成功すると、Overleaf のユーザーデータベースで、次のような構造の thirdPartyIdentifiers フィールドを含むレコードが検索されます:
externalUserId は IdP サーバーから返されるプロファイル内のユーザー ID(OVERLEAF_OIDC_USER_ID_FIELD 環境変数を参照)と一致する必要があり、providerId は OIDC プロバイダーの ID(OVERLEAF_OIDC_PROVIDER_ID を参照)と一致する必要があります。 一致するレコードが見つからない場合は、IdP のユーザープロファイル内のメールアドレスと一致するプライマリメールアドレスを持つユーザーがデータベースで検索されます:
  • そのようなユーザーが見つかった場合、thirdPartyIdentifiers フィールドが更新されます。
  • 一致するユーザーが見つからず、JIT アカウント作成が無効になっていない場合は、IdP プロファイルのメールアドレスと thirdPartyIdentifiers を使用して新しいユーザーが作成されます。
どちらの場合も、そのユーザーは外部の OIDC ユーザーと「リンク」された状態になります。ユーザーは /user/settings ページで OIDC プロバイダーとのリンクを解除できます。

ディスカバリードキュメントで値を確認する

すべての OpenID プロバイダー(OP)は、<issuer>/.well-known/openid-configuration でディスカバリードキュメントを公開しています。値は手入力せず、ここからコピーしてください。1 文字でも間違えるとログインできなくなります。
1

ディスカバリー URL を確認する

OP は、Overleaf 用に作成したクライアント(プロバイダー)のページにこの URL を表示します。Authentik では、Applications > Providers を開いてプロバイダーを選択し、OpenID Configuration URL と OpenID Configuration Issuer を探します。

Authentik:プロバイダーのディスカバリー URL と issuer(テスト環境)

URL は通常、次のような形式です。
  • Keycloak: https://keycloak.example.com/realms/<realm>/.well-known/openid-configuration
  • Authentik: https://authentik.example.com/application/o/<application-slug>/.well-known/openid-configuration
2

値を読み取る

ブラウザーで URL を開くか、Overleaf サーバー上で次のコマンドを実行します。
Authentik の応答は次のようになります。
Authentik では、プロバイダーのページの下の方にもこれらの URL が表示されます。

Authentik:プロバイダーのエンドポイント(テスト環境)

3

variables.env にコピーする

4

Overleaf から OP に到達できることを確認する

Overleaf はコンテナ内部からトークンエンドポイントと userinfo エンドポイントを呼び出すため、ブラウザーからだけでなく、コンテナ内からも OP に到達できる必要があります。
200 と出力されれば問題ありません。
issuer は末尾のスラッシュも含めて正確にコピーしてください。Overleaf はこれを ID トークン内の issuer と 1 文字ずつ比較します。少しでも違いがあると、すべての OIDC ログインが次のエラーで失敗します。{"message":{"message":"ID token not issued by expected OpenID provider."}}Authentik では、issuer はアプリケーションごとに決まります(.../application/o/<application-slug>/)。authorize、token、userinfo の URL はすべてのアプリケーションで共通ですが、issuer は Authentik サーバーのアドレスではありません。

環境変数

次の 5 つの必須変数の値は、OpenID プロバイダー(OP)の .well-known/openid-configuration エンドポイントを使用して確認できます(上記を参照)。
  • OVERLEAF_OIDC_ISSUER (必須)
  • OVERLEAF_OIDC_AUTHORIZATION_URL (必須)
  • OVERLEAF_OIDC_TOKEN_URL (必須)
  • OVERLEAF_OIDC_USER_INFO_URL (必須)
  • OVERLEAF_OIDC_LOGOUT_URL (必須)
次の 2 つの必須変数の値は、OP の管理者から提供されます
  • OVERLEAF_OIDC_CLIENT_ID (必須)
  • OVERLEAF_OIDC_CLIENT_SECRET (必須)
  • OVERLEAF_OIDC_SCOPE
    • デフォルト:openid profile email
  • OVERLEAF_OIDC_PROVIDER_ID
    • OP の任意の ID。デフォルトは oidc です。
  • OVERLEAF_OIDC_PROVIDER_NAME
    • OP の名前。/user/settings ページの Linked Accounts セクションで使用されます。デフォルトは OIDC Provider です。
  • OVERLEAF_OIDC_IDENTITY_SERVICE_NAME
    • ログインページで使用される ID サービスの表示名(デフォルト:Log in with $OVERLEAF_OIDC_PROVIDER_NAME)。
  • OVERLEAF_OIDC_PROVIDER_DESCRIPTION
    • OP の説明。Linked Accounts セクションで使用されます(デフォルト:Log in with $OVERLEAF_OIDC_PROVIDER_NAME)。
  • OVERLEAF_OIDC_PROVIDER_INFO_LINK
    • OP の説明内の Learn more の URL。デフォルトでは、説明に Learn more リンクは表示されません。
  • OVERLEAF_OIDC_PROVIDER_HIDE_NOT_LINKED
    • ユーザーのアカウントが OP とリンクされていない場合、/user/settings ページに OP を表示しません。デフォルトは false です。
  • OVERLEAF_OIDC_USER_ID_FIELD
    • この属性の値が、Overleaf で外部ユーザー ID として使用されます。デフォルトは id です。その他の妥当な値として、email と username(OIDC クレームの preferred_username に対応)があります。
  • OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS
    • OIDC 経由で認証するユーザーのジャストインタイム(JIT)アカウント作成を制限します。カンマ区切りのドメイン名のリストを設定すると、ユーザーのメールアドレスのドメインがリスト内のいずれかと一致する場合にのみ、新しいアカウントが作成されます。ドメインが一致しない場合は、管理者が OIDC ユーザーのメールアドレスを使用して、強力なランダムパスワードを設定するか、できれば hashedPassword フィールドをまったく持たない状態で、ユーザーアカウントを手動で作成する必要があります。ドメイン名の先頭に *. ワイルドカードを付けると、サブドメインにも一致させることができます。
      • 例:name@example.com や name@math.example.com のようなメールアドレスを持つユーザーに JIT アカウント作成を許可する場合:
        OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=example.com, *.example.com
      • 例:JIT アカウント作成を完全に無効にする場合:
        OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=
  • OVERLEAF_OIDC_UPDATE_USER_DETAILS_ON_LOGIN
    • true に設定すると、ログイン時にユーザーの first_name と last_name フィールドを更新し、/user/settings ページのユーザー詳細フォームを無効にします。
  • OVERLEAF_OIDC_IS_ADMIN_FIELD と OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE
    • 両方の環境変数が設定されている場合、OP から返されたプロファイルに OVERLEAF_OIDC_IS_ADMIN_FIELD で指定された属性が含まれ、その値が OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE と一致するか、OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE を含む配列(例:groups クレーム)である場合、ログイン処理で user.isAdmin = true に更新されます。それ以外の場合、user.isAdmin は false に設定されます。OVERLEAF_OIDC_IS_ADMIN_FIELD が email の場合は、属性 emails[0].value の値が一致の確認に使用されます。
OpenID プロバイダーのリダイレクト URL は https://my-overleaf-instance.com/oidc/login/callback です。
variables.env

ステップバイステップ: goauthentik

ここでは、goauthentik で動作確認済みのセットアップ手順を説明します。https://overleaf.example.com はご自身の OVERLEAF_SITE_URL に、https://authentik.example.com はご自身の Authentik のアドレスに置き換えてください。
1

プロバイダーを作成する

Authentik で Applications > Providers を開き、New Provider をクリックして OAuth2/OpenID Provider を選択し、Next をクリックします。
  • Client Type:Confidential。
  • Redirect URIs(Protocol settings の下):https://overleaf.example.com/oidc/login/callback をマッチングモード Strict で追加します。
  • この時点で Client ID と Client Secret をコピーし、OVERLEAF_OIDC_CLIENT_ID と OVERLEAF_OIDC_CLIENT_SECRET に設定します。

Authentik:新しいプロバイダーの Client ID と Client Secret

Authentik がクライアントシークレットを表示するのは、プロバイダーの作成中だけです。後から編集フォームで選択できるのは Modify のみで、これはシークレットを新しいものに置き換えます。
2

アプリケーションを作成する

Applications > Applications を開いて新しいアプリケーションを作成し、名前とスラッグ(例:overleaf)を付けて、プロバイダーを選択します。スラッグは issuer の一部になります:https://authentik.example.com/application/o/overleaf/。
3

URL をコピーする

上記のディスカバリードキュメントで値を確認するに従って、5 つの URL を入力します。
4

管理者をマッピングする(任意)

Authentik は、ユーザーのグループを配列である groups クレームとして送信します。Authentik のグループ Admins のメンバーを Overleaf の管理者にするには、次のように設定します。
管理者フラグは OIDC ログインのたびに更新されます。フィールドまたは値が誤っていると、launchpad で作成した管理者を含め、OIDC でログインしたすべての管理者が管理者権限を失います。まず 2 つ目の管理者アカウントでマッピングをテストしてください。
variables.env
最終更新日 2026年10月6日