4.4. SSSD 和 FreeIPA 身份管理集成
红帽构建的 Keycloak 包括 系统安全服务守护进程(SSSD) 插件。SSSD 是 Fedora 和 Red Hat Enterprise Linux (RHEL)的一部分,它提供对多个身份和身份验证提供程序的访问。SSSD 还提供故障转移和离线支持等优点。如需更多信息,请参阅 Red Hat Enterprise Linux Identity Management 文档。
SSSD 与 FreeIPA 身份管理(IdM)服务器集成,提供身份验证和访问控制。通过此集成,红帽构建的 Keycloak 可以针对特权访问管理(PAM)服务进行身份验证,并从 SSSD 检索用户数据。有关在 Linux 环境中使用 Red Hat Identity Management 的更多信息,请参阅 Red Hat Enterprise Linux Identity Management 文档。
红帽构建的 Keycloak 和 SSSD 通过只读 D-Bus 接口进行通信。因此,置备和更新用户的方式是使用 FreeIPA/IdM 管理界面。默认情况下,接口导入用户名、电子邮件、名字和姓氏。
红帽构建的 Keycloak 将自动注册组和角色,但不会同步它们。在红帽构建的 Keycloak 管理员中,红帽构建的 Keycloak 管理员所做的任何更改都与 SSSD 同步。
4.4.1. FreeIPA/IdM server
FreeIPA 容器镜像位于 Quay.io。要设置 FreeIPA 服务器,请查看 FreeIPA 文档。
流程
使用以下命令运行 FreeIPA 服务器:
docker run --name freeipa-server-container -it \ -h server.freeipa.local -e PASSWORD=YOUR_PASSWORD \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -v /var/lib/ipa-data:/data:Z freeipa/freeipa-server
server.freeipa.local
的参数-h
代表 FreeIPA/IdM 服务器主机名。将YOUR_PASSWORD
更改为您自己的密码。容器启动后,将
/etc/hosts
文件改为包括:x.x.x.x server.freeipa.local
如果没有进行此更改,您必须设置 DNS 服务器。
使用以下命令在 IPA 域中注册您的 Linux 服务器,以便 SSSD 联邦供应商在红帽构建的 Keycloak 上启动并运行:
ipa-client-install --mkhomedir -p admin -w password
在客户端上运行以下命令验证安装是否正常工作:
kinit admin
- 输入您的密码。
使用以下命令将用户添加到 IPA 服务器:
$ ipa user-add <username> --first=<first name> --last=<surname> --email=<email address> --phone=<telephoneNumber> --street=<street> --city=<city> --state=<state> --postalcode=<postal code> --password
使用 kinit 强制设置用户的密码。
kinit <username>
输入以下内容来恢复普通的 IPA 操作:
kdestroy -A kinit admin
4.4.2. SSSD 和 D-Bus
联邦供应商使用 D-BUS 从 SSSD 获取数据。它使用 PAM 验证数据。
流程
安装 sssd-dbus RPM。
$ sudo yum install sssd-dbus
运行以下置备脚本:
$ bin/federation-sssd-setup.sh
该脚本也可以用作为红帽构建的 Keycloak 配置 SSSD 和 PAM 的指南。它对
/etc/sssd/sssd.conf
进行以下更改:[domain/your-hostname.local] ... ldap_user_extra_attrs = mail:mail, sn:sn, givenname:givenname, telephoneNumber:telephoneNumber ... [sssd] services = nss, sudo, pam, ssh, ifp ... [ifp] allowed_uids = root, yourOSUsername user_attributes = +mail, +telephoneNumber, +givenname, +sn
ifp
服务添加到 SSSD 中,并配置为允许 OS 用户通过这个接口对 IPA 服务器进行干预。该脚本还会创建一个新的 PAM 服务
/etc/pam.d/keycloak
以通过 SSSD 验证用户:auth required pam_sss.so account required pam_sss.so
运行
dbus-send
以确保设置成功。dbus-send --print-reply --system --dest=org.freedesktop.sssd.infopipe /org/freedesktop/sssd/infopipe org.freedesktop.sssd.infopipe.GetUserAttr string:<username> array:string:mail,givenname,sn,telephoneNumber dbus-send --print-reply --system --dest=org.freedesktop.sssd.infopipe /org/freedesktop/sssd/infopipe org.freedesktop.sssd.infopipe.GetUserGroups string:<username>
如果设置成功,则每个命令分别显示用户的属性和组。如果有超时或错误,则在红帽构建的 Keycloak 上运行的联邦供应商无法检索任何数据。这个错误通常是因为服务器没有在 FreeIPA IdM 服务器中注册,或者没有访问 SSSD 服务的权限。
如果您没有访问 SSSD 服务的权限,请确保运行红帽构建的 Keycloak 服务器的用户位于以下部分的
/etc/sssd/sssd.conf
文件中:[ifp] allowed_uids = root, yourOSUsername
ipaapi
系统用户是在主机内创建的。ifp
服务需要此用户。检查用户是否已在系统中创建。grep ipaapi /etc/passwd ipaapi:x:992:988:IPA Framework User:/:/sbin/nologin
4.4.3. 启用 SSSD 联邦供应商
红帽构建的 Keycloak 使用 DBus-Java 项目与 D-Bus 和 JNA 进行通信,以通过操作系统可插拔验证模块(PAM)进行身份验证。
虽然现在红帽构建的 Keycloak 包含运行 SSSD
供应商所需的所有库,但需要 JDK 版本 17。因此,只有在主机配置正确且 JDK 17 用于运行红帽构建的 Keycloak 时,才会显示 SSSD
供应商。
4.4.4. 配置联合 SSSD 存储
安装后,配置联合 SSSD 存储。
流程
- 点菜单中的 User Federation。
- 如果一切设置成功,则 Add Sssd providers 按钮将显示在页面中。点它。
- 为新提供程序分配名称。
- 点击 Save。
现在,您可以使用 FreeIPA/IdM 用户和凭证与红帽构建 Keycloak 进行身份验证。