此功能由 yu-i-i/overleaf-cep 开发。

OIDC 身份验证
LDAP 身份验证
SAML 身份验证
全局配置
需要通过环境变量EXTERNAL_AUTH 来启用特定的身份验证模块。该环境变量指定要激活哪些外部身份验证方式。可用选项如下(小写):
- saml
- ldap
- oidc
OVERLEAF_DISABLE_LOCAL_LOGIN=true。这会隐藏邮箱和密码登录。除非 EXTERNAL_AUTH 至少启用了一种方式,否则该设置不会生效(6.3.1 中新增)。
账户和密码
设置了EXTERNAL_AUTH 后,一个实例中可以同时存在有本地密码和没有本地密码的账户。账户能否设置或更改密码仅取决于这一点:有本地密码的账户可以管理自己的密码,没有本地密码的账户只能通过 SSO 登录,并且无法获得密码,即使管理员也无法为其设置。
- LDAP 和 SAML 会在首次登录时接管具有相同邮箱的本地账户,并在每次登录时移除其本地密码。如果邮箱不同,则会创建一个新账户,不影响原有的本地账户。
- OIDC 会关联到一个账户并保留其密码,因此关联到 OIDC 的本地账户可以通过两种方式登录。可以在设置页面上点击 Link 进行关联,或者在邮箱匹配时于首次 OIDC 登录时自动关联。关联方法请参见 OIDC 身份验证。
- 管理员创建为本地账户的账户会收到一封激活邮件:激活账户时设置密码的方式与通过邮件重置密码相同。
- 启用多种方式时,例如
EXTERNAL_AUTH=ldap saml oidc,上述规则保持不变:只看账户是否有本地密码。 - 通过邮件重置需要配置邮件设置(
OVERLEAF_EMAIL_*)。如果没有配置,不会发送任何邮件,尽管页面上会提示已发送:此时请由管理员在 Admin → Manage Users 中设置密码。 OVERLEAF_DISABLE_LOCAL_LOGIN=true会隐藏邮箱和密码登录,但会保留密码:重新显示该登录方式后,密码可以再次使用。- 设置了
EXTERNAL_AUTH后,无论使用哪种方式,用户都无法在设置页面上更改自己的邮箱:邮箱由 IdP 管理,并且用户首次 OIDC 登录时会关联到拥有该用户邮箱的账户。管理员可以在 Admin → Manage Users 中更改邮箱。 - 在启用 OIDC 的实例上,请使用
OVERLEAF_ALLOW_PUBLIC_REGISTRATION=@<domain>(激活邮件可以证明邮箱地址的所有权),而不是true,或者不开放公开注册:如果设置为true,任何人都可以在同事首次 OIDC 登录之前使用该同事的邮箱注册,这会导致同事被关联到该账户。
SSO 建议
我针对 Overleaf 测试了 saml、ldap 和 oauth。saml 和 oauth 在 Overleaf 中都运行良好,但 ldap 则视情况而定。它在 https://docs.goauthentik.io/ 上无法正常工作,但在 openLDAP(https://github.com/rroemhild/docker-test-openldap)上运行良好。我们需要更新 passport-ldapauth。最近我尝试用 https://goauthentik.io/ 测试 Overleaf 的 LDAP,结果失败了。将 “passport-ldapauth” 更新到 3.0.0 之后,一切都正常了。原来的版本是 2.x.x,那已经是 6 年前的版本了。

