13.9. 使用 TOTP 配置红帽单点登录身份验证
使用这个部分将 Satellite 配置为使用 Red Hat Single Sign-On 作为 OpenID 供应商,使用 TOTP 卡进行外部身份验证。
13.9.1. 使用红帽单点登录身份验证配置 Satellite 的先决条件
在使用 Red Hat Single Sign-On 外部验证配置 Satellite 前,请确定您满足以下要求:
- 工作安装使用 HTTPS 而不是 HTTP 的 Red Hat Single Sign-On 服务器。
- 具有管理特权的 Red Hat Single Sign-On 帐户。
- 在红帽单点登录中创建的 Satellite 用户帐户的域。
- 如果证书或 CA 是自签名的,请确保将其添加到最终用户证书信任存储中。
导入或添加到红帽单点登录的用户。
如果您配置了现有用户数据库,如 LDAP 或 Kerberos,您可以通过配置用户联合来导入用户。如需更多信息,请参阅 Red Hat Single Sign-On Server 管理指南 中的用户 存储 创建器。
如果您没有配置现有用户数据库,可以在 Red Hat Single Sign-On 中手动创建用户。如需更多信息,请参阅 Red Hat Single Sign-On Server 管理指南 中的创建新用户。https://access.redhat.com/documentation/zh-cn/red_hat_single_sign-on/7.4/html/server_administration_guide/user_management#create-new-user
13.9.2. 将 Satellite 注册为红帽单点登录客户端
使用这个步骤将 Satellite 注册到 Red Hat Single Sign-On 作为客户端,并将 Satellite 配置为使用 Red Hat Single Sign-On 作为身份验证源。
您可以使用两个不同的身份验证方法配置 Satellite 和 Red Hat Single Sign-On:
- 用户使用卫星 Web UI 验证卫星。
- 用户使用 Satellite CLI 对 Satellite 进行身份验证。
您必须决定用户提前验证,因为这两种方法都需要注册到 Red Hat Single Sign-On 并配置了不同的卫星客户端。在 Red Hat Single Sign-On 中注册和配置 Satellite 客户端的步骤可区分在过程中。
如果要使用身份验证方法并相应地配置这两个客户端,您也可以将两个不同的卫星客户端注册到 Red Hat Single Sign-On。
流程
在 Satellite 服务器中安装以下软件包:
# satellite-maintain packages install mod_auth_openidc keycloak-httpd-client-install
将 Satellite 注册到红帽单点登录作为客户端。请注意,您使用 Web UI 和 CLI 登录的注册过程有所不同。您可以将两个客户端注册到红帽单点登录,以便能够通过 Web UI 和 CLI 登录卫星。
如果您希望用户使用 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
在提示时输入 manage 帐户的密码。此命令会在 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
在提示时输入 manage 帐户的密码。此命令会在 Red Hat Single Sign-On 中为 Satellite 创建客户端。
重启
httpd
服务:# systemctl restart httpd
13.9.3. 在 Red Hat Single Sign-On 中配置 Satellite 客户端
使用这个步骤在 Red Hat Single Sign-On Web UI 中配置 Satellite 客户端,并为卫星客户端创建组和使用者映射程序。
流程
- 在 Red Hat Single Sign-On Web UI 中,导航到 Clients 并单击 Satellite 客户端。
配置访问类型:
- 如果您希望用户使用 Web UI 向 Satellite 进行身份验证,从 Access Type 列表中选择 confidential。
- 如果您希望用户使用 CLI 向 Satellite 进行身份验证,从 Access Type 列表中选择 public。
在 Valid redirect URI 字段中,添加有效的重定向 URI。
如果您希望用户使用 Web UI 验证 Satellite,在现有 URI 下的空白字段中,以
https://satellite.example.com/users/extlogin
格式输入 URI。请注意,您必须在 Satellite FQDN 之后添加字符串/users/extlogin
。完成此步骤后,使用 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
- 点 Save。
- 点 mappers 选项卡,然后点 Create 添加 audience mapper。
- 在 Name 字段中输入 audience mapper 的名称。
- 从 映射类型 列表中,选择 Audience。
- 从 Included Client Audience 列表中,选择 Satellite 客户端。
- 点 Save。
- 点 Create 添加组映射程序,以便您可以根据组成员资格在 Satellite 中指定授权。
- 在 Name 字段中输入组映射程序的名称。
- 从 映射类型 列表中,选择 Group Membership。
- 在 Token Claim Name 字段中输入组 。
- 将 Full group path 设置设为 OFF。
- 点 Save。
13.9.4. 为红帽单点登录身份验证配置 Satellite 设置
使用这个部分,使用卫星 Web UI 或 CLI 为红帽单点登录身份验证配置 Satellite。
13.9.4.1. 使用 Web UI 为红帽单点登录身份验证配置 Satellite 设置
使用 Satellite Web UI 为红帽单点登录身份验证配置卫星设置。
请注意,您可以导航到域中的以下 URL,以获取配置 Satellite 设置的值: https://RHSSO.example.com/auth/realms/Satellite_Realm/.well-known/openid-configuration
前提条件
- 确保 Red Hat Single Sign-On Web UI 中的 Satellite 客户端中的 Access Type 设置设为 机密
流程
- 在 Satellite Web UI 中,导航到 Administer > Settings,然后点 Authentication 选项卡。
- 找到 Authorize login delegation 行,然后在 Value 列中找到值设为 Yes。
- 找到 Authorize login delegation auth source user autocreate row,在 Value 列中,将值设为 External。
- 找到 登录委托注销 URL 行,在 Value 列中,将值设为 https://satellite.example.com/users/extlogout。
- 找到 OIDC Algorithm 行,在 Value 列中,将 Red Hat Single Sign-On 上的编码的算法设置为 RS256。
- 找到 OIDC Audience 行,在 Value 列中,将值设置为 Red Hat Single Sign-On 的客户端 ID。
- 找到 OIDC Issuer 行,在 Value 列中找到,将值设置为 https://RHSSO.example.com/auth/realms/Satellite_Realm。
- 找到 OIDC JWKs URL 行,在 Value 列中,将值设置为 https://RHSSO.example.com/auth/realms/Satellite_Realm/protocol/openid-connect/certs。
- 导航到 Administer > Authentication Sources,再点击 External。
- 点击 Create LDAP Authentication Source 并选择 Red Hat Single Sign-On 服务器。
- 单击位置选项卡,再添加可以使用红帽单点登录身份验证来源的位置。
- 单击 Organizations 选项卡,再添加可以使用 Red Hat Single Sign-On 验证源的组织。
- 点 Submit。
13.9.4.2. 使用 CLI 为红帽单点登录身份验证配置 Satellite 设置
使用此流程,通过 Satellite CLI 为红帽单点登录身份验证配置卫星设置。
请注意,您可以导航到域中的以下 URL,以获取配置 Satellite 设置的值: https://RHSSO.example.com/auth/realms/Satellite_Realm/.well-known/openid-configuration
前提条件
- 确保 Red Hat Single Sign-On Web UI 中的 Satellite 客户端中的 Access Type 设置设为 public
流程
在 Satellite 上,将登录委托设置为
true
,以便用户可以使用 Open IDC 协议进行身份验证:# hammer settings set --name authorize_login_delegation --value true
设置登录委托注销 URL:
# hammer settings set --name login_delegation_logout_url \ --value https://satellite.example.com/users/extlogout
在 Red Hat Single Sign-On 上设置编码的算法,如
RS256
:# hammer settings set --name oidc_algorithm --value 'RS256'
-
打开
RHSSO.example.com/auth/realms/RHSSO_REALM/.well-known/openid-configuration
URL,并记录这些值以填充以下步骤中的选项。 在 Open IDC 使用者中添加 Hammer 客户的值:
# hammer settings set --name oidc_audience \ --value "['satellite.example.com-hammer-openidc']"
注意如果您将多个 Red Hat Single Sign-On 客户端注册到 Satellite,请确保在阵列中附加所有受众。例如:
# hammer settings set --name oidc_audience \ --value "['satellite.example.com-foreman-openidc', 'satellite.example.com-hammer-openidc']"
设置 Open IDC 签发者的值:
# hammer settings set --name oidc_issuer \ --value "RHSSO.example.com/auth/realms/RHSSO_Realm"
设置 Open IDC Java Web 令牌(JWT)的值:
# hammer settings set --name oidc_jwks_url \ --value "RHSSO.example.com/auth/realms/RHSSO_Realm/protocol/openid-connect/certs"
检索 Red Hat Single Sign-On 验证源的 ID:
# hammer auth-source external list
设置位置和机构:
# hammer auth-source external update --id Authentication Source ID \ --location-ids Location ID --organization-ids Organization ID
13.9.5. 为 TOTP 身份验证配置 Red Hat Single Sign-On
使用这个流程将 Satellite 配置为使用 Red Hat Single Sign-On 作为 OpenID 供应商,使用基于时间的一次性密码(TOTP)进行外部身份验证。
流程
- 在 Red Hat Single Sign-On Web UI 中,导航到 Satellite 域。
- 导航到 Authentication,点 OTP Policy 选项卡。
- 确保 支持的 Applications 字段包含 FreeOTP 或 Google Authenticator。
- 配置 OTP 设置以符合您的要求。
- 可选:如果要将 TOTP 身份验证用作所有用户的默认验证方法,点 Flows 选项卡,然后选择 OTP Form 设置的权利,请选择 REQUIRED。
- 点 所需的 Actions 选项卡。
- 在 Configure OTP 行的右侧,选择 Default Action 复选框。
13.9.6. 使用 Red Hat Single Sign-On TOTP 身份验证登录到 Satellite Web UI
使用 Red Hat Single Sign-On TOTP 身份验证登录到 Satellite Web UI。
流程
- 登录卫星,Satellite 重定向到红帽单点登录登录屏幕。
- 输入您的用户名和密码,然后点击 Log In。
- 首先尝试登录,通过扫描 barcode 并输入显示 pin,来配置您的客户端的红帽单点登录请求。
- 在配置客户端并输入有效的 PIN 后,Red Hat Single Sign-On 会将您重定向到 Satellite 并登录。
13.9.7. 使用 Red Hat Single Sign-On 登录 Satellite CLI
使用此流程,通过代码授权类型对 Satellite CLI 进行身份验证。
流程
要使用代码授权类型验证 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
该命令提示您输入成功代码。
- 要检索成功代码,请导航到命令返回并提供所需信息的 URL。
- 复制 Web UI 返回的成功代码。
-
在
hammer auth login oauth
命令提示符下,输入成功代码以向 Satellite CLI 进行身份验证。
13.9.8. 为红帽单点登录身份验证配置组映射
另外,要实施基于角色的访问控制(RBAC),在 Satellite 中创建组,将角色分配给此组,然后将 Active Directory 组映射到 Satellite 组。因此,Red Hat Single Sign-On 中给定组中的任何人都登录在对应的 Satellite 组下。本例在 Active Directory 中配置 Satellite-admin 用户组的用户,以以具有卫星上具有管理员特权的用户进行身份验证。
流程
- 在 Satellite Web UI 中,导航到 Administer > User Groups,然后单击 Create User Group 按钮。
- 在 Name 字段中输入用户组群的名称。名称不应与 Active Directory 中的相同。
- 不要在右列中添加用户和用户组。点 Roles 选项卡。
- 选中 Administer 复选框。
- 点 External Groups 选项卡。
- 点 Add external user group。
- 在 Name 字段中输入 Active Directory 组的名称。
- 从列表中,选择 EXTERNAL。