5.9. 使用 TOTP 配置红帽单点登录身份验证

使用本节将 Satellite 配置为使用 Red Hat Single Sign-On 作为使用 TOTP 卡进行外部身份验证的 OpenID 提供程序。

5.9.1. 使用红帽单点登录身份验证配置 Satellite 的先决条件

在使用 Red Hat Single Sign-On 外部身份验证配置 Satellite 前,请确保满足以下要求:

  • Red Hat Single Sign-On 服务器的工作安装,它使用 HTTPS 而不是 HTTP。
  • 具有 admin 权限的 Red Hat Single Sign-On 帐户。
  • 在 Red Hat Single Sign-On 中创建的 Satellite 用户帐户的域。
  • 如果证书或 CA 是自签名的,请确保将它们添加到最终用户证书信任存储中。
  • 导入或添加到 Red Hat Single Sign-On 中的用户。

    如果您配置了现有用户数据库,如 LDAP 或 Kerberos,您可以通过配置用户联邦来从中导入用户。如需更多信息,请参阅 红帽单点登录服务器管理指南中的 用户存储联邦

    如果您没有配置现有用户数据库,可以在 Red Hat Single Sign-On 中手动创建用户。如需更多信息 ,请参阅 红帽单点登录服务器管理指南中的创建新用户

5.9.2. 将 Satellite 注册为 Red Hat Single Sign-On Client

使用这个流程将 Satellite 注册到 Red Hat Single Sign-On 作为客户端,并将 Satellite 配置为使用 Red Hat Single Sign-On 作为身份验证源。

您可以使用两种不同的身份验证方法配置 Satellite 和 Red Hat Single Sign-On:

  1. 用户使用卫星 Web UI 向卫星进行身份验证。
  2. 用户使用 Satellite CLI 向卫星进行身份验证。

您必须决定用户提前进行身份验证的方式,因为这两种方法都需要在 Red Hat Single Sign-On 中注册和配置不同的 Satellite 客户端。在 Red Hat Single Sign-On 中注册和配置 Satellite 客户端的步骤可在流程中区分。

如果要同时使用身份验证方法并相应地配置这两个客户端,您也可以将两个不同的 Satellite 客户端注册到 Red Hat Single Sign-On。

流程

  1. 在 Satellite 服务器中安装以下软件包:

    # satellite-maintain packages install mod_auth_openidc keycloak-httpd-client-install
  2. 将 Satellite 注册到 Red Hat Single Sign-On 作为客户端。请注意,您使用 Web UI 和 CLI 登录的注册过程会有所不同。您可以将两个客户端 Satellite 客户端注册到 Red Hat Single Sign-On,以便能够从 Web UI 和 CLI 登录 Satellite。

    • 如果您希望用户使用 Web UI 向 Satellite 进行身份验证,请按如下所示创建客户端:

      # keycloak-httpd-client-install --app-name foreman-openidc \
      --keycloak-server-url "https://RHSSO.example.com" \
      --keycloak-admin-username "admin" \
      --keycloak-realm "Satellite_Realm" \
      --keycloak-admin-realm master \
      --keycloak-auth-role root-admin \
      -t openidc -l /users/extlogin --force

      出现提示时,输入管理帐户的密码。此命令在 Red Hat Single Sign-On 中为 Satellite 创建客户端。

      然后,将 Satellite 配置为使用 Red Hat Single Sign-On 作为身份验证源:

      # satellite-installer --foreman-keycloak true \
      --foreman-keycloak-app-name "foreman-openidc" \
      --foreman-keycloak-realm "Satellite_Realm"
    • 如果您希望用户使用 CLI 向 Satellite 进行身份验证,请按如下所示创建客户端:

      # keycloak-httpd-client-install --app-name hammer-openidc \
      --keycloak-server-url "https://RHSSO.example.com" \
      --keycloak-admin-username "admin" \
      --keycloak-realm "Satellite_Realm" \
      --keycloak-admin-realm master \
      --keycloak-auth-role root-admin \
      -t openidc -l /users/extlogin --force

      出现提示时,输入管理帐户的密码。此命令在 Red Hat Single Sign-On 中为 Satellite 创建客户端。

  3. 重启 httpd 服务:

    # systemctl restart httpd

5.9.3. 在 Red Hat Single Sign-On 中配置 Satellite 客户端

使用这个流程在 Red Hat Single Sign-On Web UI 中配置 Satellite 客户端,并为 Satellite 客户端创建组和 audience mappers。

流程

  1. 在 Red Hat Single Sign-On Web UI 中,导航到 Clients,再单击 Satellite 客户端。
  2. 配置访问类型:

    • 如果您希望用户使用 Satellite Web UI 向 Satellite 进行身份验证,请从 Access Type 列表中选择 confidential
    • 如果您希望用户使用 CLI 向 Satellite 进行身份验证,请从 Access Type 列表中选择 public
  3. Valid redirect URI 字段中,添加一个有效的重定向 URI。

    • 如果您希望用户使用 Satellite Web UI 向 Satellite 进行身份验证,请在现有 URI 下的空白字段中输入 URI,格式为 https://satellite.example.com/users/extlogin。请注意,您必须在 Satellite FQDN 后添加字符串 /users/extlogin

      完成此步骤后,使用 Satellite Web UI 登录的 Satellite 客户端必须具有以下 Valid Redirect URI

      https://satellite.example.com/users/extlogin/redirect_uri
      https://satellite.example.com/users/extlogin
    • 如果您希望用户使用 CLI 向 Satellite 进行身份验证,请在现有 URI 下的空白字段中输入 urn:ietf:wg:oauth:2.0:oob

      完成此步骤后,使用 CLI 登录的 Satellite 客户端必须具有以下 Valid Redirect URI

      https://satellite.example.com/users/extlogin/redirect_uri
      urn:ietf:wg:oauth:2.0:oob
  4. 点击 Save
  5. 单击 Mappers 选项卡,再单击 Create 以添加 audience mapper。
  6. Name 字段中输入 audience mapper 的名称。
  7. 映射类型列表中, 选择 Audience
  8. Included Client Audience 列表中,选择 Satellite 客户端。
  9. 点击 Save
  10. 单击 Create 以添加组映射程序,以便您可以根据组成员资格在 Satellite 中指定授权。
  11. Name 字段中输入组映射程序的名称。
  12. 映射类型列表中,选择 Group Membership
  13. Token Claim Name 字段中输入组
  14. Full group path 设置设置为 OFF。
  15. 点击 Save

5.9.4. 为红帽单点登录身份验证配置 Satellite 设置

使用本节使用 Satellite Web UI 或 CLI 为 Red Hat Single Sign-On 身份验证配置 Satellite。

5.9.4.1. 使用 Web UI 为红帽单点登录身份验证配置 Satellite 设置

使用 Satellite Web UI 为红帽单点登录身份验证配置 Satellite 设置。

请注意,您可以导航到域中的以下 URL,以获取值来配置 Satellite 设置: https://RHSSO.example.com/auth/realms/Satellite_Realm/.well-known/openid-configuration

前提条件

  • 确保 Red Hat Single Sign-On Web UI 中的 Access Type 设置为 confidential

流程

  1. 在 Satellite Web UI 中,导航到 Administer > Settings,然后点 Authentication 选项卡。
  2. 找到 Authorize login delegation 行,并在 Value 列中,将值设为 Yes
  3. 找到 Authorize login delegation auth source user autocreate 行,并在 Value 列中将值设为 External
  4. 找到 Login delegation logout URL 行,并在 Value 列中将值设为 https://satellite.example.com/users/extlogout
  5. 找到 OIDC Algorithm 行,并在 Value 列中找到,将 Red Hat Single Sign-On 中的编码算法设置为 RS256
  6. 找到 OIDC Audience 行,并在 Value 列中,将值设置为 Red Hat Single Sign-On 的客户端 ID。
  7. 找到 OIDC Issuer 行,并在 Value 列中将值设为 https://RHSSO.example.com/auth/realms/Satellite_Realm
  8. 找到 OIDC JWKs URL 行,并在 Value 列中将值设置为 https://RHSSO.example.com/auth/realms/Satellite_Realm/protocol/openid-connect/certs
  9. 在 Satellite Web UI 中,进入到 Administer > Authentication Sources,点 External 卡中的垂直 ellipsis,然后选择 Edit
  10. 单击 Locations 选项卡,并添加可以使用 Red Hat Single Sign-On 身份验证源的位置。
  11. 单击 Organizations 选项卡,并添加可以使用 Red Hat Single Sign-On 身份验证源的组织。
  12. Submit

5.9.4.2. 使用 CLI 为红帽单点登录身份验证配置 Satellite 设置

使用 Satellite CLI 为红帽单点登录身份验证配置 Satellite 设置。

请注意,您可以导航到域中的以下 URL,以获取值来配置 Satellite 设置: https://RHSSO.example.com/auth/realms/Satellite_Realm/.well-known/openid-configuration

前提条件

  • 确保 Red Hat Single Sign-On Web UI 中的 Access Type 设置为 public

流程

  1. 在 Satellite 中,将登录委托设置为 true,以便用户可以使用 Open IDC 协议进行身份验证:

    # hammer settings set --name authorize_login_delegation --value true
  2. 设置登录委派 URL:

    # hammer settings set --name login_delegation_logout_url \
    --value https://satellite.example.com/users/extlogout
  3. 在 Red Hat Single Sign-On 上设置编码的算法,如 RS256

    # hammer settings set --name oidc_algorithm --value 'RS256'
  4. 打开 RHSSO.example.com/auth/realms/RHSSO_REALM/.well-known/openid-configuration URL,并记录在以下步骤中填充选项的值。
  5. 在 Open IDC audience 中添加 Hammer 客户端的值:

    # hammer settings set --name oidc_audience \
    --value "['satellite.example.com-hammer-openidc']"
    注意

    如果您在 Satellite 中注册多个 Red Hat Single Sign-On 客户端,请确保附加阵列中的所有受众。例如:

    # hammer settings set --name oidc_audience \
    --value "['satellite.example.com-foreman-openidc', 'satellite.example.com-hammer-openidc']"
  6. 为 Open IDC 签发者设置值:

    # hammer settings set --name oidc_issuer \
    --value "RHSSO.example.com/auth/realms/RHSSO_Realm"
  7. 设置 Open IDC Java Web Token (JWT)的值:

    # hammer settings set --name oidc_jwks_url \
    --value "RHSSO.example.com/auth/realms/RHSSO_Realm/protocol/openid-connect/certs"
  8. 检索 Red Hat Single Sign-On 身份验证源的 ID:

    # hammer auth-source external list
  9. 设置位置和机构:

    # hammer auth-source external update --id Authentication Source ID \
    --location-ids Location ID --organization-ids Organization ID

5.9.5. 使用 Red Hat Single Sign-On 为 TOTP 身份验证配置 Satellite

使用这个流程将 Satellite 配置为使用 Red Hat Single Sign-On 作为使用基于时间的一次性密码(TOTP)进行外部身份验证的 OpenID 提供程序。

流程

  1. 在 Red Hat Single Sign-On Web UI 中,导航到 Satellite 域。
  2. 导航到 Authentication,然后单击 OTP Policy 选项卡。
  3. 确保 支持的 Applications 字段包含 FreeOTP 或 Google Authenticator。
  4. 配置 OTP 设置以满足您的要求。
  5. 可选:如果要将 TOTP 身份验证用作所有用户的默认身份验证方法,请点 Flows 选项卡,以及 OTP Form 设置右侧,请选择 REQUIRED
  6. Required Actions 选项卡。
  7. Configure OTP 行右侧,选中 Default Action 复选框。

5.9.6. 使用红帽单点登录 TOTP 身份验证登录到 Satellite Web UI

使用 Red Hat Single Sign-On TOTP 身份验证登录到 Satellite Web UI。

流程

  1. 登录 Satellite,Satellite 将您重定向到 Red Hat Single Sign-On 登录屏幕。
  2. 输入您的用户名和密码,然后点击 Log In
  3. 首先尝试登录,Red Hat Single Sign-On 请求您通过扫描 barcode 并输入显示的 pin 来配置客户端。
  4. 配置客户端并输入有效的 PIN 后,Red Hat Single Sign-On 会将您重定向到 Satellite 并登录到 Satellite。

5.9.7. 使用红帽单点登录登录到 Satellite CLI

使用这个流程通过代码授权类型向 Satellite CLI 进行身份验证。

流程

  1. 要使用代码授权类型向 Satellite CLI 进行身份验证,请输入以下命令:

    # hammer auth login oauth \
    --two-factor \
    --oidc-token-endpoint 'https://RHSSO.example.com/auth/realms/ssl-realm/protocol/openid-connect/token' \
    --oidc-authorization-endpoint 'https://RHSSO.example.com/auth' \
    --oidc-client-id 'satellite.example.com-foreman-openidc' \
    --oidc-redirect-uri urn:ietf:wg:oauth:2.0:oob

    该命令提示您输入成功代码。

  2. 若要检索成功代码,请导航到命令返回并提供所需信息的 URL。
  3. 复制 Web UI 返回的成功代码。
  4. hammer auth login oauth 的命令提示符中,输入成功代码来向 Satellite CLI 进行身份验证。

5.9.8. 为红帽单点登录身份验证配置组映射

另外,要实施基于角色的访问控制(RBAC),在卫星中创建组,为这个组分配一个角色,然后将 Active Directory 组映射到 Satellite 组。因此,Red Hat Single Sign-On 中给定组中的任何人都在相应的 Satellite 组下登录。本例配置 Active Directory 中的 Satellite-admin 用户组的用户,以以具有 Satellite 上管理员特权的用户身份进行身份验证。

流程

  1. 在 Satellite Web UI 中,导航到 Administer > User Groups,然后点 Create User Group 按钮。
  2. Name 字段中输入用户组的名称。名称不应与 Active Directory 中的名称不同。
  3. 不要将用户和用户组添加到右列。单击 Roles 选项卡。
  4. 选中 Administer 复选框。
  5. External Groups 选项卡。
  6. 单击 Add external user group
  7. Name 字段中输入 Active Directory 组的名称。
  8. 从列表中,选择 EXTERNAL