SAML 身份验证
此功能由以下人员开发 yu-i-i/overleaf-cep。这里我们为您的配置提供了一些文档。
配置
在内部,Overleaf 的 SAML 模块使用 passport-saml 库,下面的大多数配置选项都会传递给 passport-saml。如果您在配置 SAML 时遇到问题,值得阅读 passport-saml 的 README,以了解它期望的配置。
环境变量 EXTERNAL_AUTH 需要启用 SAML 身份验证模块。此环境变量指定启用哪些外部身份验证方法。该变量的值是一个列表。如果列表中包含 saml 则会启用 SAML 身份验证。
例如: EXTERNAL_AUTH=ldap saml
使用 SAML 身份验证方法时,用户会被重定向到身份提供者 (IdP) 的身份验证站点。如果 IdP 成功验证用户,则会在 Overleaf 用户数据库中查找包含 samlIdentifiers 字段,其结构如下:
samlIdentifiers: [
{
externalUserId: "...",
providerId: "1",
userIdAttribute: "..."
}
]其中 externalUserId 必须匹配 IdP 服务器返回的用户配置文件中由 userIdAttribute 指定的属性的值。
如果未找到匹配的记录,则会在数据库中搜索主电子邮件地址与 IdP 用户配置文件中的电子邮件匹配的用户:
如果找到这样的用户,
hashedPassword字段将被删除以禁用本地身份验证,并将添加samlIdentifiers字段。如果未找到匹配的用户,则会使用 IdP 配置文件中的电子邮件地址和
samlIdentifiers创建一个新用户。
注意: 当前仅支持一个 SAML IdP。 providerId 字段在 samlIdentifiers 中固定为 '1'.
环境变量
OVERLEAF_SAML_IDENTITY_SERVICE_NAME身份服务的显示名称,用于登录页面(默认:
使用 SAML IdP 登录).
OVERLEAF_SAML_USER_ID_FIELD此属性的值将被 Overleaf 用作外部用户 ID,默认值为
nameID.
OVERLEAF_SAML_EMAIL_FIELD用户配置文件中电子邮件字段的名称,默认值为
nameID.
OVERLEAF_SAML_FIRST_NAME_FIELD用户配置文件中 firstName 字段的名称,默认值为
givenName.
OVERLEAF_SAML_LAST_NAME_FIELD用户配置文件中 lastName 字段的名称,默认值为
lastName
OVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN如果设置为
true,则在登录时会更新用户的first_name和last_name字段,并在/user/settings页面上关闭用户详细信息表单。
OVERLEAF_SAML_ENTRYPOINT(必需)SAML 身份服务的入口点 URL。
示例:
https://idp.example.com/simplesaml/saml2/idp/SSOService.phpAzure 示例:
https://login.microsoftonline.com/8b26b46a-6dd3-45c7-a104-f883f4db1f6b/saml2
OVERLEAF_SAML_ISSUER(必需)发行者名称。
OVERLEAF_SAML_AUDIENCE预期的 SAML 响应 Audience,默认值为
OVERLEAF_SAML_ISSUER.
OVERLEAF_SAML_IDP_CERT(必需)包含身份提供者公钥证书的文件路径,用于验证传入 SAML 响应的签名。如果身份提供者有多个有效的签名证书,则可以是证书路径的 JSON 数组。
示例(单个证书):
/var/lib/overleaf/certs/idp_cert.pem示例(多个证书):
["var/lib/overleaf/certs/idp_cert.pem", "/var/lib/overleaf/certs/idp_cert_old.pem"]
OVERLEAF_SAML_PUBLIC_CERT包含公用签名证书的文件路径,用于嵌入到身份验证请求中,以便 IdP 验证传入 SAML 请求的签名。当策略配置了 metadata endpoint 时需要
OVERLEAF_SAML_PRIVATE_KEY。可以提供证书路径的 JSON 数组以支持证书轮换。提供证书数组时,数组中的第一个条目应与当前的OVERLEAF_SAML_PRIVATE_KEY匹配。数组中的其他条目可用于在更改OVERLEAF_SAML_PRIVATE_KEY.
OVERLEAF_SAML_PRIVATE_KEY之前向 IdP 发布即将使用的证书。
OVERLEAF_SAML_PUBLIC_CERT包含与用于对 passport-saml 发送的身份验证请求进行签名的
匹配的 PEM 格式私钥的文件路径。OVERLEAF_SAML_DECRYPTION_CERT metadata endpoint.
包含公用证书的文件路径,用于OVERLEAF_SAML_DECRYPTION_PVK
匹配的 PEM 格式私钥的文件路径。包含与
匹配的私钥的文件路径,该私钥将用于尝试解密接收到的任何加密断言。OVERLEAF_SAML_SIGNATURE_ALGORITHM
可选地设置用于签署请求的签名算法,有效值为 'sha1'(默认)、'sha256'(推荐)、'sha512'(最安全,请检查您的 IdP 是否支持)。OVERLEAF_SAML_ADDITIONAL_PARAMS
要添加到所有请求的附加查询参数的 JSON 字典。OVERLEAF_SAML_ADDITIONAL_AUTHORIZE_PARAMS
示例:
要添加到“authorize”请求的附加查询参数的 JSON 字典。
{"some_key": "some_value"}OVERLEAF_SAML_IDENTIFIER_FORMAT
向身份提供者请求的名称标识符格式(默认:urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress)。如果使用urn:oasis:names:tc:SAML:2.0:nameid-format:persistentOVERLEAF_SAML_EMAIL_FIELD,请确保定义了环境变量。如果需要urn:oasis:names:tc:SAML:2.0:nameid-format:transient,则您还必须定义OVERLEAF_SAML_ID_FIELD
环境变量,例如可以将其设置为用户的电子邮件地址。OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MS
在检查 OnBefore 和 NotOnOrAfter 断言条件有效性时间戳时,客户端和服务器之间可接受的时钟偏差(以毫秒为单位)。设置为 -1 将完全禁用这些条件的检查。默认值为 0。OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEXAttributeConsumingServiceIndex属性,添加到 AuthnRequest 以指示 IdP 将哪个属性集附加到响应().
链接OVERLEAF_SAML_AUTHN_CONTEXT
要请求的身份验证上下文的名称标识符格式值的 JSON 数组。默认:.
["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"]OVERLEAF_SAML_FORCE_AUTHN
true如果为
,则服务提供者发出的初始 SAML 请求会指定 IdP 应强制重新验证用户,即使他们拥有有效会话。OVERLEAF_SAML_FORCE_AUTHN
trueOVERLEAF_SAML_DISABLE_REQUESTED_AUTHN_CONTEXTtrue,则不请求特定的身份验证上下文。例如,您可以将此设置为以允许额外的上下文,例如无密码登录(urn:oasis:names:tc:SAML:2.0:ac:classes:X509
)。对额外上下文的支持取决于您的 IdP。如果设置为
OVERLEAF_SAML_AUTHN_REQUEST_BINDINGHTTP-POST
,将通过 HTTP POST 绑定向 IdP 请求身份验证,否则默认为 HTTP-Redirect。OVERLEAF_SAML_FORCE_AUTHN
OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TOalwaysOVERLEAF_SAML_FORCE_AUTHN
,则将验证传入 SAML 响应中的 InResponseTo。neverOVERLEAF_SAML_FORCE_AUTHN
,则不会验证 InResponseTo(默认)。ifPresent
,则只有在传入的 SAML 响应中存在该字段时才会验证 InResponseTo。和OVERLEAF_SAML_WANT_ASSERTIONS_SIGNEDOVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED
true当设置为(默认)时,Overleaf 期望 SAML 断言或整个 SAML 身份验证响应由 IdP 签名。当两个选项都为false
时,至少断言或响应之一必须被签名。OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS
定义为 SAML 请求生成的请求 ID 在 SAML 响应的InResponseTo
字段中被看到时不再有效的过期时间。默认:28800000(8 小时)。OVERLEAF_SAML_LOGOUT_URL
用于注销请求的基础地址(默认:).示例:
entryPoint
https://idp.example.com/simplesaml/saml2/idp/SingleLogoutService.phpOVERLEAF_SAML_ADDITIONAL_LOGOUT_PARAMS
要添加到“logout”请求的附加查询参数的 JSON 字典。和OVERLEAF_SAML_IS_ADMIN_FIELDOVERLEAF_SAML_IS_ADMIN_FIELD_VALUE
当这两个环境变量都设置时,如果 SAML IdP 返回的配置文件包含由指定的属性且其值匹配要添加到“logout”请求的附加查询参数的 JSON 字典。或为包含OVERLEAF_SAML_IS_ADMIN_FIELD的数组,则登录过程会将OVERLEAF_SAML_IS_ADMIN_FIELDuser.isAdmin = true否则将user.isAdmin(默认)时,Overleaf 期望 SAML 断言或整个 SAML 身份验证响应由 IdP 签名。当两个选项都为设置为true。如果这两个变量中的任意一个未设置,则管理员状态仅在 Launchpad 中创建管理员用户时设置为
。
身份提供者的元数据 当前版本的 Overleaf CE 包含一个用于检索服务提供者元数据的端点:
http://my-overleaf-instance.com/saml/meta
需要在身份提供者中配置以识别 Overleaf 服务器为“服务提供者”。请参阅您的 SAML 服务器文档以获取如何执行此操作的说明。
</EntityDescriptor> 请注意证书、, AssertionConsumerService.Location 和 SingleLogoutService.Location EntityDescriptor.entityID
最后更新于