5.9. 使用红帽单点登录身份验证配置 Satellite
使用本节将 Satellite 配置为使用红帽单点登录作为外部身份验证的 OpenID 提供程序。
5.9.1. 使用红帽单点登录身份验证配置 Satellite 的先决条件
在使用 Red Hat Single Sign-On 外部身份验证配置 Satellite 前,请确保满足以下要求:
- 使用 HTTPS 而不是 HTTP 的 Red Hat Single Sign-On 服务器的工作安装。
- 具有 admin 权限的 Red Hat Single Sign-On 帐户。
- 在红帽单点登录中创建的 Satellite 用户帐户的域。
- 如果证书或 CA 是自签名的,请确保它们被添加到最终用户证书信任存储中。
导入或添加到 Red Hat Single Sign-On 的用户。
如果您配置了现有用户数据库,如 LDAP 或 Kerberos,您可以通过配置用户联邦来从其中导入用户。如需更多信息,请参阅 Red Hat Single Sign-On Server Administration Guide 中的 User Storage Federation。
如果您没有配置现有用户数据库,您可以在 Red Hat Single Sign-On 中手动创建用户。如需更多信息 ,请参阅 红帽单点登录服务器管理指南中的创建新用户。
5.9.2. 将 Satellite 注册为 Red Hat Single Sign-On 客户端
使用这个流程将 Satellite 注册到 Red Hat Single Sign-On 作为客户端,并将 Satellite 配置为使用 Red Hat Single Sign-On 作为身份验证源。
您可以使用两个不同的身份验证方法配置 Satellite 和 Red Hat Single Sign-On:
- 用户使用 Satellite Web UI 向 Satellite 进行身份验证。
- 用户使用 Satellite CLI 向 Satellite 进行身份验证。
您必须决定希望用户提前进行身份验证,因为这两种方法都需要将不同的 Satellite 客户端注册到 Red Hat Single Sign-On 并进行配置。在 Red Hat Single Sign-On 中注册和配置 Satellite 客户端的步骤在流程中区分。
如果要使用身份验证方法并相应地配置两个客户端,您还可以将两个不同的 Satellite 客户端注册到 Red Hat Single Sign-On。
流程
在 Satellite 服务器中安装以下软件包:
# satellite-maintain packages install mod_auth_openidc keycloak-httpd-client-install python3-lxml
将 Satellite 注册到 Red Hat Single Sign-On 作为客户端。请注意,您使用 Web UI 和 CLI 登录的注册过程会有所不同。您可以将两个客户端 Satellite 客户端注册到红帽单点登录,以便能够通过 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 创建客户端。
重启
httpd
服务:# systemctl restart httpd
5.9.3. 在 Red Hat Single Sign-On 中配置 Satellite 客户端
使用这个流程在 Red Hat Single Sign-On Web UI 中配置 Satellite 客户端,并为 Satellite 客户端创建组和受众映射程序。
流程
- 在 Red Hat Single Sign-On Web UI 中,导航到 Clients 并单击 Satellite 客户端。
配置访问类型:
- 如果您希望用户使用 Satellite Web UI 向 Satellite 进行身份验证,请从 Access Type 列表中选择 confidential。
- 如果您希望用户使用 CLI 向 Satellite 进行身份验证,请从 Access Type 列表中选择 public。
在 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
- 点击 Save。
- 点 Mappers 选项卡,然后点 Create 添加受众映射程序。
- 在 Name 字段中输入 audience mapper 的名称。
- 从 Mapper Type 列表中,选择 Audience。
- 从 Included Client Audience 列表中,选择 Satellite 客户端。
- 点击 Save。
- 点 Create 添加组映射器,以便您可以根据组成员资格在 Satellite 中指定授权。
- 在 Name 字段中输入组映射程序的名称。
- 从 Mapper Type 列表中,选择 Group Membership。
- 在 Token Claim Name 字段中输入组。
- 将 Full group path 设置为 OFF。
- 点击 Save。
5.9.4. 为红帽单点登录身份验证配置 Satellite 设置
使用本节通过 Satellite Web UI 或 CLI 为红帽单点登录身份验证配置 Satellite。
5.9.4.1. 使用 Web UI 为红帽单点登录身份验证配置 Satellite 设置
使用 Satellite Web UI 为 Red Hat Single Sign-On 身份验证配置 Satellite 设置。
请注意,您可以导航到域中的以下 URL,以获取值来配置 Satellite 设置: https://RHSSO.example.com/auth/realms/Satellite_Realm/.well-known/openid-configuration
先决条件
- 确保 Red Hat Single Sign-On Web UI 中的 Satellite 客户端中的 Access Type 设置设为 confidential
流程
- 在 Satellite Web UI 中,进入到 Administer > Settings,然后点击 Authentication 选项卡。
- 找到 Authorize login delegation 行,然后在 Value 列中将值设为 Yes。
- 找到 Authorize login delegation auth source user autocreate 行,并在 Value 列中将值设为 External。
- 找到 Login delegation logout 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。
- 在 Satellite Web UI 中,进入到 Administer > Authentication Sources,点 External 卡中的垂直 ellipsis,然后选择 Edit。
- 单击 Locations 选项卡,再添加可以使用 Red Hat Single Sign-On 身份验证源的位置。
- 单击 Organizations 选项卡,再添加可以使用 Red Hat Single Sign-On 身份验证源的组织。
- 点 Submit。
5.9.4.2. 使用 CLI 为红帽单点登录身份验证配置 Satellite 设置
使用 Satellite CLI 为 Red Hat Single Sign-On 身份验证配置 Satellite 设置。
请注意,您可以导航到域中的以下 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 Token (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
5.9.5. 使用红帽单点登录登录到 Satellite Web UI
使用这个流程,使用红帽单点登录登录到 Satellite Web UI。
流程
- 在您的浏览器中,登录 Satellite 并输入您的凭据。
5.9.6. 使用红帽单点登录登录到 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 登录 oauth
的命令提示符中,输入用于向 Satellite CLI 进行身份验证的成功代码。
5.9.7. 为 Red Hat Single Sign-On 身份验证配置组映射
另外,为了实施基于角色的访问控制(RBAC),请在 Satellite 中创建一个组,为该组分配一个角色,然后将 Active Directory 组映射到 Satellite 组。因此,Red Hat Single Sign-On 中给定组中的任何人都会在对应的 Satellite 组下登录。本例在 Active Directory 中配置 Satellite-admin 用户组的用户,以用户身份在 Satellite 上进行身份验证。
流程
- 在 Satellite Web UI 中,进入到 Administer > User Groups。
- 单击 Create User Group。
- 在 Name 字段中输入用户组的名称。名称不应与 Active Directory 中的名称相同。
- 不要将用户和用户组添加到右列中。点 Roles 选项卡。
- 选中 Administer 复选框。
- 点 External Groups 选项卡。
- 单击 Add external user group。
- 在 Name 字段中输入 Active Directory 组的名称。
- 从列表中选择 EXTERNAL。