LDAP 認証
この機能は以下によって開発されています yu-i-i/overleaf-cep。ここでは設定用のいくつかのドキュメントを提供します。
Overleaf は passport-ldapauth ライブラリを使用していますが、比較的古いため LDAP 互換性は完全に保証されません。特定の LDAP ID プロバイダー(例えば、 https://goauthentik.io/)ではログインに失敗する場合があります。したがって、可能であれば事前に OAuth/SAML の方法を使用することを推奨します。
LDAP とは何か
LDAP は外部の識別確認に使用される認証プロトコルです。Overleaf Server Pro は標準の認証方法とは別に、ウェブインターフェース上で専用の LDAP ログインフォームを提供します。ユーザーが LDAP のユーザー名とパスワードを送信すると、Overleaf のバックエンドは構成された LDAP サーバー(例えば ldap://ldap:10389.

設定
内部的に、Overleaf の LDAP は passport-ldapauth ライブラリを使用します。これらの構成オプションの多くは サーバー の構成オブジェクトに渡され、で構成に使用されます。 passport-ldapauthLDAP の設定で問題がある場合は、が期待する設定の感覚をつかむために passport-ldapauth の README を読む価値があります。
環境変数 EXTERNAL_AUTH は LDAP 認証モジュールを有効にするために必要です。この環境変数はどの外部認証方法が有効化されているかを指定します。この変数の値はリストです。リストに ldap が含まれていれば、LDAP 認証が有効になります。
例えば: EXTERNAL_AUTH=ldap saml
Overleaf CEP とは異なり、当方の ayaka-notes エディションでは LDAP 認証を純粋な認証方法として制限しており、これは以下で利用可能です http://your-overleaf.com/ldap/login.
LDAP 認証方法を使用するとき、ユーザーはログインフォームに ユーザー名 と パスワード を入力し、次の処理が試みられます:
LDAP ユーザーは、によって定義されたフィルタを使用して LDAP ディレクトリ内で検索され、
OVERLEAF_LDAP_SEARCH_FILTERで認証されます。認証に成功した場合、Overleaf のユーザーデータベースで認証された LDAP ユーザーのメールアドレスと一致するプライマリメールアドレスを持つユーザーが存在するか確認されます:
一致するユーザーが見つかった場合、
hashedPasswordこのユーザーのフィールドは削除されます(存在する場合)。これにより、そのユーザーは今後 LDAP 認証によってのみログインできるようになります。一致するユーザーが見つからない場合、LDAP サーバーから取得したメール、名、姓を用いて新しい Overleaf ユーザーが作成されます。
LDAP によってログインするユーザーについては、Overleaf の mongo データベースにハッシュ化パスワードを保存しない(または既存のものを削除する)ようにしています。
環境変数
OVERLEAF_LDAP_URL(必須)LDAP サーバーの URL。
例:
ldaps://ldap.example.com:636(SSL 上の LDAP)例:
ldap://ldap.example.com:389(暗号化されていない、または構成されている場合は STARTTLS)。
OVERLEAF_LDAP_IDENTITY_SERVICE_NAMEログインページで使用される LDAP ID サービスの表示名。
デフォルトは
Log in with LDAP Provider.
OVERLEAF_LDAP_EMAIL_ATTLDAP サーバーが返すメール属性、デフォルトは
mail。各 LDAP ユーザーは少なくとも 1 つのメールアドレスを持っている必要があります。複数のアドレスが提供されている場合、最初のものだけが使用されます。
OVERLEAF_LDAP_FIRST_NAME_ATTアプリケーションで使用されるユーザーの名を保持するプロパティ名。通常は
givenName.
OVERLEAF_LDAP_LAST_NAME_ATTアプリケーションで使用されるユーザーの姓を保持するプロパティ名。通常は
sn.
OVERLEAF_LDAP_NAME_ATTユーザーのフルネームを保持するプロパティ名。通常は
cn。前述の二つの変数のいずれかが定義されていない場合、ユーザーの名および/または姓はこの変数から抽出されます。そうでなければ、この変数は使用されません。
OVERLEAF_LDAP_PLACEHOLDERログインフォームのプレースホルダ、デフォルトは
Username.
OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGINが設定されている場合
true、ログイン時に LDAP ユーザーのfirst_nameとlast_nameフィールドを更新し、LDAP ユーザーに対して/user/settingsページのユーザー詳細フォームをオフにします。そうでない場合、詳細は初回ログイン時のみ取得されます。
OVERLEAF_LDAP_BIND_DNLDAP 接続に使用されるべき LDAP ユーザーの識別名(このユーザーは LDAP サーバー上でアカウントを検索/一覧表示できる必要があります)、例:
cn=ldap_reader,dc=example,dc=com。定義されていない場合は匿名バインドが使用されます。
OVERLEAF_LDAP_BIND_CREDENTIALSのパスワード
OVERLEAF_LDAP_BIND_DN.
OVERLEAF_LDAP_BIND_PROPERTYクライアントに対してバインドするユーザーのプロパティ。デフォルトは
dn.
OVERLEAF_LDAP_SEARCH_BASE(必須)ユーザーを検索する開始基点となるベース DN。例:
ou=people,dc=example,dc=com.
OVERLEAF_LDAP_SEARCH_FILTERLDAP 検索フィルタはユーザーを見つけるために使用されます。リテラル '{{username}}' を使用すると、指定されたユーザー名が LDAP 検索に挿入されます。
例:
(|(uid={{username}})(mail={{username}}))(ユーザーはメールまたはログイン名でログインできます)。例:
(sAMAccountName={{username}})(Active Directory)。
OVERLEAF_LDAP_SEARCH_SCOPE検索のスコープは次のいずれかになり得ます
base,one、またはsub(デフォルト)。
OVERLEAF_LDAP_SEARCH_ATTRIBUTESLDAP サーバーから取得する属性の JSON 配列、例:
["uid", "mail", "givenName", "sn"]。デフォルトでは、すべての属性が取得されます。
OVERLEAF_LDAP_STARTTLSが設定されている場合、TLS 上の LDAP が使用されます。
trueOVERLEAF_LDAP_TLS_OPTS_CA_PATH
LDAP サーバーの SSL/TLS 証明書を検証するために使用される CA 証明書を含むファイルへのパス。複数の証明書がある場合は、証明書へのパスの JSON 配列にすることができます。ファイルは docker コンテナからアクセス可能でなければなりません。例(1 件の証明書):
/var/lib/overleaf/certs/ldap_ca_cert.pem
例(複数の証明書):["/var/lib/overleaf/certs/ldap_ca_cert1.pem", "/var/lib/overleaf/certs/ldap_ca_cert2.pem"]
OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH
、サーバー証明書は提供された CA リストに対して検証されます。が設定されている場合、TLS 上の LDAP が使用されます。
trueOVERLEAF_LDAP_CACHE
、その場合最大 100 件の資格情報が同時に 5 分間キャッシュされます。が設定されている場合、TLS 上の LDAP が使用されます。
trueOVERLEAF_LDAP_TIMEOUT
操作がタイムアウトするまでクライアントが許容する時間、ミリ秒(デフォルト:無限)。OVERLEAF_LDAP_CONNECT_TIMEOUT
TCP 接続でタイムアウトするまでクライアントが待機する時間、ミリ秒(デフォルト:OS のデフォルト)。OVERLEAF_LDAP_IS_ADMIN_ATT
OVERLEAF_LDAP_IS_ADMIN_ATT_VALUEと両方の環境変数が設定されている場合、ログイン処理は以下を更新しますuser.isAdmin = true
もし LDAP プロファイルに、で指定された属性が含まれており、その値がと一致するか、または配列にOVERLEAF_LDAP_IS_ADMIN_ATT_VALUEを含んでいる場合、そうでなければ両方の環境変数が設定されている場合、ログイン処理は以下を更新しますuser.isAdmin両方の環境変数が設定されている場合、ログイン処理は以下を更新しますはfalseに設定されます。これらのいずれかの変数が設定されていない場合、管理者ステータスは Launchpad における管理ユーザー作成時にのみに設定されます。次の 5 つの変数は、LDAP サーバーからユーザーの連絡先を取得する方法の設定に使用されます。trueOVERLEAF_LDAP_CONTACTS_FILTER
連絡先としてロードするために LDAP サーバーでユーザーを検索するために使用されるフィルタ。フィルタ内のプレースホルダ '{{userProperty}}' は、検索を開始した LDAP ユーザーの
OVERLEAF_LDAP_CONTACTS_PROPERTYで指定されたプロパティの値に置き換えられます。定義されていない場合、LDAP サーバーから連絡先へユーザーは取得されません。
OVERLEAF_LDAP_CONTACTS_SEARCH_BASE連絡先検索を開始するベース DN を指定します。デフォルトは
OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPEは、フィルタ内の '{{userProperty}}' プレースホルダを置き換えるユーザーオブジェクトのプロパティを指定します。
OVERLEAF_LDAP_SEARCH_BASE.
OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE検索のスコープは次のいずれかになり得ます
base,one、またはsub(デフォルト)。
OVERLEAF_LDAP_CONTACTS_SEARCH_BASE検索が非 LDAP ユーザーによって開始された場合の
OVERLEAF_LDAP_CONTACTS_PROPERTY.
の値を指定します。この変数が定義されていない場合、生成されるフィルタは何にも一致しません。値はワイルドカードとして使用できます。
OVERLEAF_LDAP_CONTACTS_SEARCH_BASE例*OVERLEAF_LDAP_CONTACTS_FILTER=(gidNumber={{userProperty}})
最終更新