第 13 章 IdM 中 SSSD 身份验证故障排除
在 Identity Management(IdM)环境中的身份验证涉及许多组件:
在 IdM 客户端中:
- SSSD 服务。
- Name Services Switch (NSS)。
- 可插拔验证模块 (PAM)。
在 IdM 服务器上:
- SSSD 服务。
- IdM 目录服务器。
- IdM Kerberos 密钥分发中心 (KDC)。
如果您要以 Active Directory (AD) 用户进行身份验证:
- AD 域控制器上的目录服务器。
- AD 域控制器上的 Kerberos 服务器。
要验证用户,您必须使用 SSSD 服务执行以下功能:
- 从身份验证服务器检索用户信息。
- 提示用户输入其凭据,将这些凭据传递到身份验证服务器,然后处理结果。
要了解更多有关 SSSD 服务和存储用户信息的服务器之间的信息流,以便可以排除您环境中身份验证尝试失败的问题,请参阅:
13.1. 使用 SSSD 获取 IdM 用户信息时的数据流
下图使用 getent passwd <idm_user_name>
命令在请求 IdM 用户信息的过程中简化 IdM 客户端和 IdM 服务器之间的信息流。
-
getent
命令会触发来自libc
库的getpwnam
调用。 -
libc
库引用/etc/nsswitch.conf
配置文件来检查哪个服务负责提供用户信息,并发现SSSD
服务的条目。 -
libc
库打开ss_sss
模块。 -
nss_sss 模块检查内存映射缓存以获取用户信息。如果缓存中存在数据,则
ss_sss
模块会返回它。 -
如果用户信息不在内存映射缓存中,则会将请求传递给 SSSD
sssd_nss
响应程序进程。 -
SSSD 服务检查其缓存。如果缓存中存在数据并有效,
sssd_nss
响应程序会从缓存中读取数据并将其返回到应用。 -
如果缓存中没有数据或数据已过期,
sssd_nss
响应器将查询相应的后端进程并等待回复。SSSD 服务在 IdM 环境中使用 IPA 后端,通过sssd.conf
配置文件中的id_provider=ipa
启用。 -
sssd_be
后端进程连接到 IdM 服务器,并从 IdM LDAP 目录服务器请求信息。 - IdM 服务器上的 SSSD 后端响应 IdM 客户端上的 SSSD 后端进程。
- 客户端上的 SSSD 后端将生成的数据存储在 SSSD 缓存中,并提醒已更新缓存的响应程序进程。
-
sssd_nss
前端响应器进程从 SSSD 缓存检索信息。 -
sssd_nss
响应器将用户信息发送到ss_sss
响应者,以完成请求。 -
libc
库将用户信息返回到请求它的应用程序。