OIDC 認証
この機能は次によって開発されています yu-i-i/overleaf-cep。ここでは設定用のいくつかのドキュメントを提供しています。
設定
内部的に、Overleaf の OIDC モジュールは passport-openidconnect ライブラリを使用します。OpenID Connect の設定で問題がある場合は、期待される設定内容を把握するために以下の README を読む価値があります。 passport-openidconnect で期待される設定の感触をつかんでください。
環境変数 EXTERNAL_AUTH は OIDC 認証モジュールを有効にするために必要です。この環境変数はどの外部認証方法が有効化されているかを指定します。この変数の値はリストです。リストに oidc が含まれている場合、OIDC 認証が有効になります。
例えば: EXTERNAL_AUTH=ldap oidc
OIDC 認証方式を使用する場合、ユーザーはアイデンティティプロバイダ(IdP)の認証サイトにリダイレクトされます。IdP がユーザーを正常に認証した場合、Overleaf のユーザーデータベースで次のような thirdPartyIdentifiers フィールドを含むレコードがあるかどうかが確認されます:
thirdPartyIdentifiers: [
{
externalUserId: "...",
externalData: null,
providerId: "..."
}
]その externalUserId は IdP サーバーが返すプロファイル内のユーザー ID と一致する必要があります(詳細は OVERLEAF_OIDC_USER_ID_FIELD 環境変数を参照)、および providerId は OIDC プロバイダの ID と一致する必要があります(詳細は OVERLEAF_OIDC_PROVIDER_ID).
一致するレコードが見つからない場合、データベースは IdP のユーザープロファイル内のメールと一致する主メールアドレスを持つユーザーを検索します:
もしそのようなユーザーが見つかった場合、
thirdPartyIdentifiersフィールドが更新されます。一致するユーザーが見つからず、JIT(Just-in-Time)アカウント作成が無効化されていない場合、IdP プロファイルからのメールアドレスと
thirdPartyIdentifiersで新しいユーザーが作成されます。
どちらの場合でも、ユーザーは外部 OIDC ユーザーに「リンク」されているとみなされます。ユーザーは /user/settings ページで OIDC プロバイダからリンクを解除することができます。
環境変数
以下の 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_IDOP の任意の ID(デフォルトは)
oidc.
OVERLEAF_OIDC_PROVIDER_NAMEOP の名前は
Linked Accountsセクションで使用されます/user/settingsページ、デフォルトはOIDC Provider.
OVERLEAF_OIDC_IDENTITY_SERVICE_NAMEログインページで使用されるアイデンティティサービスの表示名(デフォルト:
Log in with $OVERLEAF_OIDC_PROVIDER_NAME).
OVERLEAF_OIDC_PROVIDER_DESCRIPTIONOP の説明は
Linked Accountsセクションで使用されます(デフォルト:Log in with $OVERLEAF_OIDC_PROVIDER_NAME).
OVERLEAF_OIDC_PROVIDER_INFO_LINK詳細を読むOP 説明内の URL、デフォルト:説明内にリンクはありません。詳細を読む説明内にリンクはありません。
OVERLEAF_OIDC_PROVIDER_HIDE_NOT_LINKEDユーザーのアカウントが OP とリンクされていない場合、OP を
/user/settingsページに表示しない(デフォルトfalse.
OVERLEAF_OIDC_USER_ID_FIELDこの属性の値は Overleaf によって外部ユーザー ID として使用されます。デフォルトは
id。他の妥当な値にはemailやusername(対応する OIDC クレームはpreferred_username)。
OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINSOIDC 経由で認証するユーザーの JIT(Just-in-Time)アカウント作成を制限します。カンマ区切りのドメイン名リストに設定すると、新しいアカウントはユーザーのメールアドレスのドメインがリスト内のいずれかと一致する場合にのみ作成されます。ドメインが一致しない場合は、管理者が OIDC ユーザーのメールアドレスを使用してユーザーアカウントを手動で作成する必要があります。その際は強力なランダムパスワードを設定するか、望ましくは
hashedPasswordフィールドをまったく設定しないでください。ドメイン名はサブドメインにマッチさせるために先頭に*.ワイルドカードを含めることができます。例:次のようなメールアドレスのユーザーに対して JIT アカウント作成を許可する場合:
[email protected]や[email protected]: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ページで OIDC プロバイダからリンクを解除することができます。
OVERLEAF_OIDC_IS_ADMIN_FIELDやOVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE両方の環境変数が設定されている場合、ログイン処理は OP が返すプロファイルに指定された属性が含まれており、かつその値が
user.isAdmin = trueに一致する場合、OVERLEAF_OIDC_IS_ADMIN_FIELDそしてその値が一致する場合、OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUEそうでない場合はuser.isAdminはfalseに設定されます。もしOVERLEAF_OIDC_IS_ADMIN_FIELDの実行がemailに設定されている場合、属性の値としてemails[0].valueがマッチチェックに使用されます。
あなたの OpenID プロバイダのリダイレクト URL は次のとおりです https://my-overleaf-instance.com/oidc/login/callback.
最終更新