lockLDAP 身份验证

此功能由以下人员/项目开发 yu-i-i/overleaf-ceparrow-up-right。在此我们提供了一些供您配置使用的文档。

circle-exclamation

什么是 LDAP

LDAP 是用于外部身份验证的协议。Overleaf Server Pro 在 Web 界面中提供了一个专用的 LDAP 登录表单,独立于标准认证方式。当用户提交其 LDAP 用户名和密码时,Overleaf 后端会将凭据与配置的 LDAP 服务器(例如 ldap://ldap:10389.

LDAP 的 Server Pro 示例

配置

在内部,Overleaf LDAP 使用 passport-ldapautharrow-up-right 库。大多数这些配置选项会传递给 服务器 配置对象,该对象用于配置 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 认证方法时,用户在登录表单中输入一个 用户名密码 ,系统会尝试执行以下操作:

  1. 使用由 OVERLEAF_LDAP_SEARCH_FILTER 定义的过滤器在 LDAP 目录中搜索 LDAP 用户并进行认证。

  2. 如果认证成功,Overleaf 用户数据库会检查是否存在主电子邮件地址与已认证 LDAP 用户的电子邮件地址匹配的用户:

    • 如果找到匹配的用户,则为该用户删除 hashedPassword 字段(如果存在)。这可确保该用户今后只能通过 LDAP 认证登录。

    • 如果未找到匹配用户,则会使用从 LDAP 服务器检索到的电子邮件、名和姓创建新的 Overleaf 用户。

triangle-exclamation

环境变量

  • OVERLEAF_LDAP_URL (必需)

    • LDAP 服务器的 URL。

      • 示例: ldaps://ldap.example.com:636 (基于 SSL 的 LDAP)

      • 示例: ldap://ldap.example.com:389 (未加密或使用 STARTTLS,如已配置)。

  • OVERLEAF_LDAP_IDENTITY_SERVICE_NAME

    • LDAP 身份服务的显示名称,在登录页面上使用。

    • 默认值为 使用 LDAP 提供者登录.

  • OVERLEAF_LDAP_EMAIL_ATT

    • LDAP 服务器返回的电子邮件属性,默认 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_namelast_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_ATTOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE

    • 当这两个环境变量都设置时,登录过程会在 LDAP 配置文件包含由 指定的属性且其值要么匹配 或为包含 OVERLEAF_LDAP_IS_ADMIN_ATT 的数组时,将更新 OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE user.isAdmin = true OVERLEAF_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 用户发起时, * 的值。如果未定义此变量,生成的过滤器将匹配不到任何内容。值

chevron-right可用作通配符。hashtag

OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE=1000 上述示例会将所有具有相同 UNIXgid 的 LDAP 用户加载到当前 LDAP 用户的联系人中。 非 LDAP 用户的联系人中将包含所有 UNIX

chevron-rightgid=1000hashtag

最后更新于