搜索

4.4. SSSD 和 FreeIPA 身份管理集成

download PDF

红帽构建的 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 freeipa integration overview

红帽构建的 Keycloak 和 SSSD 通过只读 D-Bus 接口进行通信。因此,置备和更新用户的方式是使用 FreeIPA/IdM 管理界面。默认情况下,接口导入用户名、电子邮件、名字和姓氏。

注意

红帽构建的 Keycloak 将自动注册组和角色,但不会同步它们。在红帽构建的 Keycloak 管理员中,红帽构建的 Keycloak 管理员所做的任何更改都与 SSSD 同步。

4.4.1. FreeIPA/IdM server

FreeIPA 容器镜像位于 Quay.io。要设置 FreeIPA 服务器,请查看 FreeIPA 文档

流程

  1. 使用以下命令运行 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 更改为您自己的密码。

  2. 容器启动后,将 /etc/hosts 文件改为包括:

    x.x.x.x     server.freeipa.local

    如果没有进行此更改,您必须设置 DNS 服务器。

  3. 使用以下命令在 IPA 域中注册您的 Linux 服务器,以便 SSSD 联邦供应商在红帽构建的 Keycloak 上启动并运行:

     ipa-client-install --mkhomedir -p admin -w password
  4. 在客户端上运行以下命令验证安装是否正常工作:

     kinit admin
  5. 输入您的密码。
  6. 使用以下命令将用户添加到 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
  7. 使用 kinit 强制设置用户的密码。

     kinit <username>
  8. 输入以下内容来恢复普通的 IPA 操作:

    kdestroy -A
    kinit admin

4.4.2. SSSD 和 D-Bus

联邦供应商使用 D-BUS 从 SSSD 获取数据。它使用 PAM 验证数据。

流程

  1. 安装 sssd-dbus RPM。

    $ sudo yum install sssd-dbus
  2. 运行以下置备脚本:

    $ 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
  3. 运行 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 存储。

流程

  1. 点菜单中的 User Federation
  2. 如果一切设置成功,则 Add Sssd providers 按钮将显示在页面中。点它。
  3. 为新提供程序分配名称。
  4. 点击 Save

现在,您可以使用 FreeIPA/IdM 用户和凭证与红帽构建 Keycloak 进行身份验证。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.