OIDC 身份验证
此功能由以下人员开发 yu-i-i/overleaf-cep。在此我们为您的配置提供了一些文档。
配置
在内部,Overleaf 的 OIDC 模块使用了 passport-openidconnect 库。如果您在配置 OpenID Connect 时遇到问题,值得阅读 passport-openidconnect 的 README,以了解它期望的配置。
环境变量 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)账户创建,则将使用 IdP 配置文件中的电子邮件地址和
thirdPartyIdentifiers创建新用户。
在这两种情况下,用户都被认为与外部 OIDC 用户“关联”。用户可以在 /user/settings 页面上将其与 OIDC 提供者取消关联。
环境变量
以下五个必需变量的值可以通过您的 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(必需)
以下两个必需变量的值将由您的 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 的名称,用于
已关联账户部分(section)位于/user/settings页面,默认值为OIDC 提供者.
OVERLEAF_OIDC_IDENTITY_SERVICE_NAME身份服务的显示名称,用于登录页面(默认:
使用 $OVERLEAF_OIDC_PROVIDER_NAME 登录).
OVERLEAF_OIDC_PROVIDER_DESCRIPTIONOP 的描述,用于
已关联账户部分(默认:使用 $OVERLEAF_OIDC_PROVIDER_NAME 登录).
OVERLEAF_OIDC_PROVIDER_INFO_LINK了解更多OP 描述中的 URL,默认:描述中无链接。了解更多(空)
OVERLEAF_OIDC_PROVIDER_HIDE_NOT_LINKED如果用户的账户未与该 OP 关联,则在
/user/settings页面上不显示该 OP,默认值为false.
OVERLEAF_OIDC_USER_ID_FIELD此属性的值将被 Overleaf 用作外部用户 ID,默认为
id。其他合理的可能值有email和username(对应于preferred_usernameOIDC 声明)。
OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS限制通过 OIDC 进行身份验证的用户的即时(JIT)账户创建。如果设置为以逗号分隔的域名列表,则仅当用户电子邮件地址的域与列表中的某个域匹配时,才会创建新账户。如果域不匹配,则管理员必须使用 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_FIELDOVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE
当两个环境变量都设置时,登录过程会更新user.isAdmin = true禁用用户详细信息表单。如果 OP 返回的配置文件包含由OVERLEAF_OIDC_IS_ADMIN_FIELD指定的属性,并且其值与匹配,否则user.isAdminfalse将被设置为禁用用户详细信息表单。tlmgr path addemail。如果则用于匹配检查的属性值为emails[0].value
您的 OpenID 提供者的重定向 URL 为 https://my-overleaf-instance.com/oidc/login/callback.
最后更新于