平台: 所有平台 适用于: COMSOL 模型管理器服务器 版本: 所有版本

问题描述

我希望使用“轻量级目录访问协议”(LDAP) 身份验证为“模型管理器服务器”配置外部身份验证,以允许用户使用其域帐户进行登录。然而,我不清楚如何填写 LDAP 登录模块配置框。

解决方法

作为“模型管理器服务器”外部身份验证配置的 LDAP 登录模块,其工作原理是根据 LDAP 目录(例如 Windows Active Directory)中存储的用户凭据来验证给定的用户名和密码。

本 解决方法演示了如何使用免费的 Apache Directory Studio™ 工具指定 LDAP 登录模块的配置设置。您可以在 Model Manager Server Manual 页面的 External AuthenticationLdapLoginModule Java® 文档中获取更多信息。

使用 Apache Directory Studio 准备配置

设置 Apache Directory Studio

  1. https://directory.apache.org/studio/downloads.html 下载合适的 Apache Directory Studio 存档,并将其解压缩到计算机上某个方便的位置。
  2. 下载 Java 11 Runtime 存档,例如从 https://adoptium.net/temurin/releases/?package=jre&version=11 下载,并将其解压缩到 Apache Directory Studio 文件夹。
  3. 将提取的 Java Runtime 文件夹(在 Apache Directory Studio 文件夹中)重命名为 jre ,以便 Apache Directory Studio 能够正确定位它。

连接到 LDAP 服务器

  1. 启动 Apache Directory Studio。
  2. LDAP 菜单中选择 New Connection
  3. 定位到 New LDAP Connection 对话框:
    • Connection name 框中为连接编写一些描述性文本,例如“我的连接”。
    • Hostname 框应该是 LDAP 服务器的主机名。如果您要使用 SSL 加密 (LDAPS),请使用完全限定的主机名,以确保服务器标识与其证书匹配。
    • Port 框应该是要连接到 LDAP 服务器的 TCP 端口。通常 LDAP 的默认端口号为 389,LDAPS 的默认端口号为 636。然而,对于 Windows Active Directory 服务器,建议改为 LDAP 使用端口 3268,LDAPS 使用端口 3269 以访问全局目录。
    • 对于 Encryption method,可以选择 No encryption (LDAP) 或 Use SSL encryption (LDAPS),这是 LDAP 登录模块支持的两种方法。请确保端口号与加密方法兼容。
  4. 单击 Check Network Parameter 以验证是否可以连接 LDAP 服务器,然后单击 Next
    • 如果您收到关于由于未知颁发者而导致证书无效的警告,如果它是已知的自签名证书,请选择信任它。在这种情况下,您可能还需要执行下面 Trusting LDAP server certificates 中的步骤,以确保它受到“模型管理器服务器”的信任。
  5. 输入用于 LDAP 服务器身份验证的用户名和密码。您可能需要添加域前缀 (username@example.com) 或后缀 (EXAMPLE\username)。请注意此处使用的用户名格式,因为这将是“模型管理器服务器”外部身份验证页面上 LDAP 登录模块中的身份验证标识框使用的格式。
  6. 单击 Check Authentication 以确认您可以进行身份验证,然后单击 Finish

定位用户提供者文件夹

  1. 连接到 LDAP 服务器后,转到 LDAP Browser 视图,然后展开 DIT 节点以浏览目录树。
  2. 在组织中找到合适的顶级文件夹,其子树中包含应该能够登录的所有用户。如果用户存在于目录的多个分支,请选择树顶部附近的文件夹,以确保覆盖所有位置。
  3. 右键单击该文件夹,然后选择 Advanced > Copy URL,并将此 URL 保存在某处,以用于外部身份验证页面上的用户提供者框。

生成用户过滤器

  1. 在目录中找到一个应被允许登录的典型用户,可以通过手动浏览来完成,如果您知道用户的专有名称(例如 DN=John Smith),也可以使用 Navigate > Go to DN 功能。
  2. 在用户的属性列表中,选择值为 userobjectClass 属性。
  3. 然后,按住 Ctrl 键,向下滚动以查找并选择包含其用户名的合适属性(例如 Active Directory 的 sAMAccountName )。
  4. 最后,查看是否有任何 memberOf 属性表示用于登录服务器的强制组成员资格,并按 Ctrl 键选择它们。
  5. 选择所有相关属性后,右键单击 Advanced > Copy AND Search Filter,并将此过滤器保存在某处,以用作外部身份验证页面上用户过滤器框的模板。

注: 如果您在目录中找不到典型用户,还可以尝试使用以下常见的用户过滤器之一继续操作:

  • Active Directory: (&(sAMAccountName={USERNAME})(objectclass=user))
  • OpenLDAP: (&(uid={USERNAME})(objectClass=inetOrgPerson))

可选:为可选的组成员资格生成过滤器

对于那些非强制要求但您希望将其映射到用户组以在“模型管理器服务器”中进行访问控制的任何其他组成员资格,请执行以下操作。

  1. 与上述生成用户过滤器类似,找到具有可选组成员资格的代表性用户,并选择其属性。
  2. 生成一个搜索过滤器并保存它,以将其用于外部身份验证页面上其他可选 LDAP 登录模块实例中的用户过滤器框。

配置模型管理器服务器

配置外部身份验证

  1. 以根管理员身份登录“模型管理器服务器”Web 界面。
  2. 转至管理 > 系统 > 外部身份验证,然后单击编辑
  3. 添加 LDAP 登录模块,并将其控制标志设为必备,这意味着它是必需的,如果此登录模块不成功,身份验证链将停止。
  4. 用户提供者框中,输入在上述定位用户提供者文件夹 中复制的 URL。
  5. 用户过滤器框中,输入在生成用户过滤器 中复制的搜索过滤器,但将其中的真实用户名替换为字符串标记 {USERNAME}。例如,如果复制的搜索过滤器是 (&(objectClass=user)(sAMAccountName=john)),则写入 (&(objectClass=user)(sAMAccountName={USERNAME}))。在搜索用户凭据时,LDAP 登录模块会将该标记替换为尝试登录的用户的用户名。
  6. 身份验证标识框中,输入您在连接到 LDAP 服务器 中使用的用户名格式,但将真实用户名替换为字符串标记 {USERNAME}。例如,如果以 zoe@example.com 登录,则写入 {USERNAME}@example.com。在对 LDAP 服务器进行身份验证时,LDAP 登录模块会将标记替换为尝试登录的用户的用户名。
  7. 如果您在 Apache Directory Studio 中使用了加密,会看到用户提供者 URL 以 ldaps:// 开头,此时请保持将使用 SSL 设为启用,否则将其切换为禁用。建议使用加密,以避免将未加密的用户名和密码发送到 LDAP 服务器。
  8. 单击测试,并使用一组已知的用户凭据来确认身份验证是否正常工作。如果可能,请使用应具有访问权限的用户凭据以及有效但不应具有访问权限的用户凭据进行测试。
    • 如果启用了 SSL 并得到一个异常链(以 SunCertPathBuilderException 异常结束并带有消息 unable to find valid certification path to requested target),请参阅下面的信任 LDAP 服务器证书,以确保服务器证书受信任。
  9. 单击保存并确认用户可以登录。

可选:映射默认的“模型管理器”用户组

如果您希望使用在配置外部身份验证 中输入的外部身份验证配置进行登录的所有用户都被指派到特定的“模型管理器”用户组,请执行以下步骤。

  1. 编辑外部身份验证配置,并在授权标识框中为要指派的组填写唯一标识符。例如,如果该组名为 engineering ,您可以填写 engineering-user-group
  2. 添加一个组映射,其中将主体名称设置为唯一标识符(例如 engineering-user-group),并关联一个映射组,其组名engineering
  3. 保存配置,并确认使用外部身份验证登录的用户在我的帐户页面(在“模型管理器服务器”web 页面右上角的帐户菜单中)上显示映射的组。

可选:映射可选的“模型管理器”用户组

如果您在上面的为可选的组成员资格生成过滤器 中生成了搜索过滤器,并希望使用它们将可选的外部组成员资格映射到“模型管理器服务器”用户组,请执行以下步骤。

  1. 编辑外部身份验证配置并添加另一个 LDAP 登录模块。将控制标志设为可选,这意味着即使该模块失败,身份验证也能够成功。
  2. 使用与上述配置外部身份验证 中相同的值填写用户提供者身份验证标识
  3. 使用可选组成员资格的搜索过滤器填写用户过滤器框,并像之前一样将用户名替换为 {USERNAME}
  4. 使用可选组成员资格的唯一标识符填写授权标识
  5. 为可选组成员资格添加另一个组映射,使用唯一标识符作为主体名称,并使用可选用户组名称作为组名,类似于上述映射默认的“模型管理器”用户组 中的说明。
  6. 如果用户在目录中具有可选组的成员资格,则单击测试以确认该组已映射。
  7. 对任何其他可选用户组重复此操作。
  8. 保存配置,并确认可选用户组映射有效。

如果需要:服务器证书管理

信任 LDAP 服务器证书

如果需要,请根据安装“模型管理器服务器”的操作系统,按照以下操作说明进行操作,以确保 LDAPS 服务器的证书受到“模型管理器服务器”的信任。

首先,需要确定 LDAPS 服务器证书链的根,通常是您组织的本地 CA 证书。如果您尚未将其作为文件提供,请参阅下面的获取 LDAPS 服务器的证书链

要信任的证书可以放置在运行“模型管理器服务器”的计算机上的任意临时位置。将证书导入信任存储库后(如下所述),将不再使用该证书文件,您可以将其从临时位置移除。

在 Windows 上(使用 6.2 及更高版本的“模型管理器服务器”)

从 6.2 版本开始,“模型管理器服务器”使用 Windows 操作系统的内置信任存储库,因此,您只需将根证书安装到 Windows 信任存储库中。

  1. 在 Windows 中启动内置的 certlm.msc 工具,然后导航至 Trusted Root Certification Authorities > Certificates 文件夹。
  2. 操作菜单中选择安装,然后单击下一步以指定要导入的文件。
  3. 单击浏览,或键入要作为受信任的根导入的证书的路径。
  4. 依次单击下一步下一步完成,然后确认证书显示在列表中。
在 Linux®、macOS 或 Windows 上(使用 6.1 及更低版本的“模型管理器”)

在 Linux 和 macOS 系统上(以及 Windows 系统上 COMSOL 6.2 之前的版本),“模型管理器服务器”使用在安装中随 Java Runtime 一起提供的信任存储库。

  1. 在安装的“模型管理器服务器”中找到 Java keytool 的路径。
    • 在 Linux 系统上,默认路径为 /usr/local/comsol62/modelmanagerserver/java/glnxa64/jre/bin/keytool
    • 在 macOS 系统上,默认路径为 /Applications/COMSOL62/ModelManagerServer/java/maci64/jre/bin/keytool
    • 在 Windows 系统上,默认路径为 C:\Program Files\COMSOL\COMSOL62\ModelManagerServer\java\win64\jre\bin\keytool.exe
    • 在基于 ARM64 的平台上,将 glnxa64maci64 分别替换为 glnxarm64macarm64
  2. 使用 -importcert -cacerts -file myrootcert.pem -alias myrootcert 变元运行 keytool ,其中 -file 变元应指向要安装的根证书,-alias 是信任存储库中导入的根证书条目的别名。
    • 在运行该命令时,您需要具有对安装目录的写权限。
  3. 输入 Java cacerts 文件的密码,默认为 changeit
  4. 审核证书信息并回答 yes 以进行安装。

获取 LDAPS 服务器的证书链

Java keytool 包含在“模型管理器服务器”安装中,位于上述信任 LDAP 服务器证书 给出的默认路径中。

  1. 使用变元 -printcert -rfc -sslserver hostname:port 运行 keytool ,其中 hostname:port 是 LDAPS 服务器的主机名和端口。
  2. 输出应该是以 -----BEGIN CERTIFICATE----- 开头、并以 -----END CERTIFICATE----- 结尾的块。将最后一个代码段复制到剪贴板,它通常对应于证书链的根。
  3. 将复制的代码段粘贴到文本编辑器中,然后将文件另存为 myrootcert.pem ,并保存到任意临时位置。