id-card-clipOIDC 身份验证

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

配置

在内部,Overleaf 的 OIDC 模块使用了 passport-openidconnectarrow-up-right 库。如果您在配置 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_ID

    • OP 的任意 ID,默认为 oidc.

  • OVERLEAF_OIDC_PROVIDER_NAME

    • OP 的名称,用于 已关联账户 部分(section)位于 /user/settings 页面,默认值为 OIDC 提供者.

  • OVERLEAF_OIDC_IDENTITY_SERVICE_NAME

    • 身份服务的显示名称,用于登录页面(默认: 使用 $OVERLEAF_OIDC_PROVIDER_NAME 登录).

  • OVERLEAF_OIDC_PROVIDER_DESCRIPTION

    • OP 的描述,用于 已关联账户 部分(默认: 使用 $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。其他合理的可能值有 emailusername (对应于 preferred_username OIDC 声明)。

  • 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_namelast_name 字段,并在 /user/settings 页面上将其与 OIDC 提供者取消关联。

  • 禁用用户详细信息表单。OVERLEAF_OIDC_IS_ADMIN_FIELD

    • OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE 当两个环境变量都设置时,登录过程会更新 user.isAdmin = true 禁用用户详细信息表单。 如果 OP 返回的配置文件包含由 OVERLEAF_OIDC_IS_ADMIN_FIELD指定的属性,并且其值与 匹配,否则 user.isAdmin false将被设置为 禁用用户详细信息表单。 tlmgr path add email 。如果 则用于匹配检查的属性值为 emails[0].value

您的 OpenID 提供者的重定向 URL 为 https://my-overleaf-instance.com/oidc/login/callback.

chevron-right示例 variables.env 文件hashtag

最后更新于