4.3. 在从 LDAP 迁移到 IdM 时规划密码迁移
在将用户从 LDAP 迁移到身份管理(IdM)之前,需要回答的一个关键问题是是否迁移用户密码。可用的选项如下:
- 迁移没有密码的用户
可以更快地执行,但需要管理员和用户进行更多的手动操作。在某些情况下,这是唯一可用的选项:例如,如果 原始的 LDAP 环境存储了明文用户密码,或者如果 密码不符合 IdM 中定义的密码策略要求。
在迁移无密码的用户帐户时,您可以重置所有用户密码。迁移的用户被分配一个临时密码,在第一次登录时更改该密码。有关如何重置密码的更多信息,请参阅 HREL 7 IdM 文档中的 更改和重置用户密码。
- 迁移带密码的用户
提供更顺畅的过渡,但还需要在迁移和转换过程中并行管理 LDAP 目录和 IdM。其原因在于,默认情况下,IdM 使用 Kerberos 进行身份验证,并且要求每个用户除标准用户密码外还有存储在 IdM 目录服务器中的 Kerberos 哈希。要生成哈希,需要以明文形式将用户密码提供给 IdM 服务器。在创建新用户密码时,密码会在被哈希处理前以明文形式提供,并存储在 IdM 中。但是,当用户从 LDAP 目录迁移时,相关的用户密码已被哈希处理,因此无法生成相应的 Kerberos 密钥。
重要默认情况下,用户无法验证到 IdM 域或访问 IdM 资源,除非它们有 Kerberos 哈希 - 即使用户帐户已经存在。有一个临时解决方案:在 IdM 中使用 LDAP 身份验证,而不是 Kerberos 身份验证。在这个临时解决方案中,用户不需要 Kerberos 哈希。但是,这个临时解决方案限制了 IdM 的功能,我们不推荐。
以下小节解释了如何迁移用户及其密码:
4.3.1. 在将 LDAP 迁移到 IdM 时迁移密码的方法
要在不强制用户更改密码的情况下将用户帐户从 LDAP 迁移到身份管理(IdM),您可以使用以下方法:
方法 1: 使用迁移网页
告诉用户一次将其 LDAP 凭据输入到 IdM Web UI 中的特殊页面 https://ipaserver.example.com/ipa/migration
。在后台运行的脚本随后捕获明文密码,并使用密码和合适的 Kerberos 哈希正确更新用户帐户。
方法 2(推荐):使用 SSSD
通过使用系统安全服务守护进程(SSSD)生成所需的用户密钥来缓解迁移对用户的影响。对于具有大量用户的部署,或者用户不应承担密码更改所带来的负担的部署,这是最佳方案。
工作流
- 用户尝试使用 SSSD 登录到机器。
- SSSD 尝试对 IdM 服务器执行 Kerberos 身份验证。
- 即使用户在系统中存在,但会出现错误为 key type is not supported 的身份验证失败,因为 Kerberos哈希不存在。
- SSSD 通过安全连接执行纯文本 LDAP 绑定。
- IdM 截获此绑定请求。如果用户有 Kerberos 主体,但没有 Kerberos 哈希,则 IdM 身份提供者会生成哈希,并将其存储在用户条目中。
- 如果身份验证成功,SSSD 会断开与 IdM 的连接,并再次尝试 Kerberos 身份验证。这一次,请求会成功,因为条目中存在哈希。
使用方法 2 时,整个过程对用户不可见。他们登录客户端服务,但请注意他们的密码已从 LDAP 移到 IdM。
4.3.2. 规划明文 LDAP 密码的迁移
尽管大多数部署中 LDAP 密码都被加密存储,但可能有一些用户或一些环境对用户条目使用明文密码。
当用户从 LDAP 服务器迁移到 IdM 服务器时,他们的明文密码不会被迁移,因为 IdM 不允许明文密码。相反,会为每个用户创建一个 Kerberos 主体,keytab 设为 true,密码设为过期。这意味着 IdM 要求用户在下次登录时重置密码。如需更多信息,请参阅 规划不满足 IdM 要求的 LDAP 密码的迁移 。
4.3.3. 规划不满足 IdM 要求的 LDAP 密码的迁移
如果原始目录中的用户密码不符合身份管理(IdM)中定义的密码策略,则迁移后密码将无效。
当用户通过输入 kinit
第一次尝试获得 IdM 域中的 Kerberos 票据授权票据(TGT)时,会自动完成密码重置。强制用户更改其密码:
[migrated_idm_user@idmclient ~]$ kinit
Password for migrated_idm_user@IDM.EXAMPLE.COM:
Password expired. You must change it now.
Enter new password:
Enter it again: