LDAP 身份验证
此功能由以下人员/项目开发 yu-i-i/overleaf-cep。在此我们提供了一些供您配置使用的文档。
Overleaf 使用了 passport-ldapauth 库,该库相对较老旧,无法完全保证与 LDAP 的兼容性。对于某些 LDAP 身份提供者(例如, https://goauthentik.io/),可能会发生登录失败。因此,如果可能,建议优先使用 OAuth/SAML 方法。
什么是 LDAP
LDAP 是用于外部身份验证的协议。Overleaf Server Pro 在 Web 界面中提供了一个专用的 LDAP 登录表单,独立于标准认证方式。当用户提交其 LDAP 用户名和密码时,Overleaf 后端会将凭据与配置的 LDAP 服务器(例如 ldap://ldap:10389.

配置
在内部,Overleaf LDAP 使用 passport-ldapauth 库。大多数这些配置选项会传递给 服务器 配置对象,该对象用于配置 passport-ldapauth。如果您在配置 LDAP 时遇到问题,值得阅读 passport-ldapauth 的 README 来了解它所期望的配置。
环境变量 EXTERNAL_AUTH 是启用 LDAP 认证模块所必需的。此环境变量指定启用了哪些外部认证方法。该变量的值是一个列表。如果列表中包含 ldap 则会启用 LDAP 认证。
例如: EXTERNAL_AUTH=ldap saml
不同于 Overleaf CEP,在我们的 ayaka-notes 版本中,我们将 LDAP 认证限制为纯认证方法,可通过以下地址使用: http://your-overleaf.com/ldap/login.
使用 LDAP 认证方法时,用户在登录表单中输入一个 用户名 和 密码 ,系统会尝试执行以下操作:
使用由
OVERLEAF_LDAP_SEARCH_FILTER定义的过滤器在 LDAP 目录中搜索 LDAP 用户并进行认证。如果认证成功,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_NAMELDAP 身份服务的显示名称,在登录页面上使用。
默认值为
使用 LDAP 提供者登录.
OVERLEAF_LDAP_EMAIL_ATTLDAP 服务器返回的电子邮件属性,默认
mail。每个 LDAP 用户必须至少有一个电子邮件地址。如果提供多个地址,则仅使用第一个。
OVERLEAF_LDAP_FIRST_NAME_ATT用于在应用中表示用户名(名)的属性名称,通常为
givenName.
OVERLEAF_LDAP_LAST_NAME_ATT用于在应用中表示用户姓氏的属性名称,通常为
sn.
OVERLEAF_LDAP_NAME_ATT用于表示用户全名的属性名称,通常为
cn。如果前面两个变量中的任意一个未定义,则会从此变量提取用户的名和/或姓。否则不会使用此变量。
OVERLEAF_LDAP_PLACEHOLDER登录表单的占位符,默认值为
用户名.
OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN如果设置为
true,在登录时会更新 LDAP 用户的first_name和last_name字段,并在 LDAP 用户的/user/settings页面上关闭用户详情表单。否则,用户详情仅在首次登录时获取。
OVERLEAF_LDAP_BIND_DN用于 LDAP 连接的 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_FILTER用于查找用户的 LDAP 搜索过滤器。使用字面量 '{{username}}' 将给定的用户名插入到 LDAP 搜索中。
示例:
(|(uid={{username}})(mail={{username}}))(用户可以用电子邮件或登录名登录)。示例:
(sAMAccountName={{username}})(Active Directory)。
OVERLEAF_LDAP_SEARCH_SCOPE搜索范围可以是
base,one,或sub(默认)。
OVERLEAF_LDAP_SEARCH_ATTRIBUTES从 LDAP 服务器获取的属性的 JSON 数组,例如,
["uid", "mail", "givenName", "sn"]。默认情况下,会获取所有属性。
OVERLEAF_LDAP_STARTTLS如果为
true,则使用基于 TLS 的 LDAP。
OVERLEAF_LDAP_TLS_OPTS_CA_PATH包含用于验证 LDAP 服务器 SSL/TLS 证书的 CA 证书文件的路径。如果有多个证书,则可以是指向证书的路径的 JSON 数组。文件必须对 Docker 容器可访问。
示例(单个证书):
/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如果为
true,服务器证书将根据提供的 CA 列表进行验证。
OVERLEAF_LDAP_CACHE如果为
true,则最多会缓存 100 条凭据,缓存时长为 5 分钟。
OVERLEAF_LDAP_TIMEOUT客户端在操作超时之前应允许操作存在的最长时间,单位为毫秒(默认:无限)。
OVERLEAF_LDAP_CONNECT_TIMEOUT客户端在 TCP 连接上等待超时的最长时间,单位为毫秒(默认:操作系统默认值)。
OVERLEAF_LDAP_IS_ADMIN_ATT和OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE当这两个环境变量都设置时,登录过程会在 LDAP 配置文件包含由
指定的属性且其值要么匹配或为包含OVERLEAF_LDAP_IS_ADMIN_ATT的数组时,将更新OVERLEAF_LDAP_IS_ADMIN_ATT_VALUEuser.isAdmin = trueOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE,否则user.isAdmin会被设置为false。如果这两个变量中任意一个未设置,则管理员状态仅在 Launchpad 中创建管理员用户时设置为true。
下面五个变量用于配置如何从 LDAP 服务器检索用户联系人。
OVERLEAF_LDAP_CONTACTS_FILTER用于在 LDAP 服务器中搜索要加载到联系人中的用户的过滤器。过滤器中的占位符 '{{userProperty}}' 将被替换为由
OVERLEAF_LDAP_CONTACTS_PROPERTY指定的 LDAP 用户发起搜索时该属性的值。如果未定义,则不会从 LDAP 服务器检索任何用户到联系人中。
OVERLEAF_LDAP_CONTACTS_SEARCH_BASE指定开始搜索联系人时的基础 DN。默认值为
OVERLEAF_LDAP_SEARCH_BASE.
OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE搜索范围可以是
base,one,或sub(默认)。
OVERLEAF_LDAP_CONTACTS_PROPERTY指定将替换
OVERLEAF_LDAP_CONTACTS_FILTER.
中 '{{userProperty}}' 占位符的用户对象的属性。OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE
OVERLEAF_LDAP_CONTACTS_PROPERTY指定当搜索由非 LDAP 用户发起时,*的值。如果未定义此变量,生成的过滤器将匹配不到任何内容。值
最后更新于