第 3 章 身份验证 API 调用


与 Satellite API 交互需要身份验证。您可以将 Satellite 服务器 CA 证书下载到本地主机,以便在每个 API 请求中使用以提供 SSL 身份验证。每个 API 请求都需要有效的用户名和密码。在以下部分中讨论每个选项。

3.1. 使用 SSL 身份验证

Red Hat Satellite 使用 HTTPS,在与 Red Hat Satellite Server 通信时提供一定程度的加密和身份验证。Satellite 6 不支持非 SSL 通信。
每个 Red Hat Satellite 服务器都使用自签名证书。此证书同时充当服务器证书,以验证加密密钥和证书颁发机构(CA)以信任 Satellite 服务器的身份。以下步骤演示了如何为 Satellite 服务器设置 SSL 身份验证(本例中为 satellite6.example.com):
  1. 使用以下选项之一从您要与之通信的Satellite服务器获取证书:
    1. 要使用 SSH 获取证书,请运行以下命令:
      $ scp root@satellite6.example.com:/var/www/html/pub/katello-server-ca.crt ./
      Copy to Clipboard Toggle word wrap
    2. 如果您直接在 Satellite 服务器上执行命令,请运行以下命令从本地可用副本获取证书:
      $ cp /var/www/html/pub/katello-server-ca.crt ./
      Copy to Clipboard Toggle word wrap
    3. 要使用 HTTP 获取证书,请运行以下命令:
      $ curl -O http://satellite6.example.com/pub/katello-server-ca.crt
      Copy to Clipboard Toggle word wrap
      警告
      使用未加密的 HTTP 连接检索证书可能会存在安全风险。
  2. 使用客户端中的证书作为证书颁发机构来验证 Satellite 服务器的身份:
    $ curl -X GET -u sat_username:sat_password \
    -H "Accept:application/json" --cacert katello-server-ca.crt \
    https://satellite6.example.com/katello/api/organizations
    Copy to Clipboard Toggle word wrap
    GET 是默认操作,因此此处可以省略 so -X GET 属性。
  3. 创建网络安全服务(NSS)数据库来存储证书:
    $ certutil -N -d sql:$HOME/.pki/nssdb
    Enter a password which will be used to encrypt your keys.
    The password should be at least 8 characters long,
    and should contain at least one non-alphabetic character.
    
    Enter new password:
    Re-enter password:
    Copy to Clipboard Toggle word wrap
    如果 NSS 数据库已存在,系统将提示您输入密码,如下所示:
    Enter Password or Pin for "NSS Certificate DB":
    Copy to Clipboard Toggle word wrap
  4. 使用以下命令,将证书永久包含在 NSS 数据库中:
    $ certutil -d sql:$HOME/.pki/nssdb -A -t TC -n "Red Hat Satellite" \
    -i katello-server-ca.crt
    Copy to Clipboard Toggle word wrap
    这会将证书导入到 NSS 数据库中,这意味着您可以省略每个请求的- cacert 选项。您可以按照以下方式测试它:
    $ curl -X GET -u sat_username:sat_password https://satellite6.example.com/api/v2/hosts
    {
        "total": 2,
        ...,
        "results": [
            ...
        ]
    }
    output omitted
    Copy to Clipboard Toggle word wrap

3.2. 使用 HTTP 身份验证

对 Satellite API 的所有请求都需要合适的用户名和密码。API 使用 HTTP 基本身份验证 [1] 对这些凭证进行编码,然后添加到 Authorization 标头中。如果请求没有包括适当的 Authorization 标头,API 会返回 401 Authorization Required 错误。
重要
基本身份验证涉及潜在的敏感信息,如密码,以纯文本形式发送。REST API 需要 HTTPS 进行纯文本请求的传输级别加密。
有些 base64 库将编码的凭据分成多行,并使用换行符终止每行。这会使标头无效,并导致请求出现故障。授权标头要求编码的凭据位于标头中的一行中。

3.3. 使用 OAuth 身份验证

作为基本身份验证的替代选择,API 中支持有限的 OAuth 1.0 身份验证(有时在协议 1.0 中称为 1leged OAuth)。

3.3.1. 配置 OAuth

在 Satellite 6.3 中默认启用 OAuth。配置设置存储在 /etc/foreman/settings.yaml 配置文件中,并可通过 管理 Settings Auth 在 Web UI 中查看。OAuth consumer 密钥 是所有 OAuth 客户端要使用的令牌。Web UI 中的某些值无法更改。这些值只能通过使用新选项再次运行 satellite-installer 脚本来更改。请注意,升级时会丢失对该文件的任何手动更改。输入以下命令查看所有 OAuth 相关的安装程序选项:
# satellite-installer --full-help | grep oauth
Copy to Clipboard Toggle word wrap
如果您希望使用 OAuth 进行的所有 API 请求作为内置匿名 API 管理员帐户授权,请在 /etc/foreman/settings.yaml 文件中将 OAuth 映射用户 设置为 false。如果要指定发出请求的用户,请将此配置选项更改为 true。这允许客户端发送带有现有 Foreman 用户登录的 FOREMAN-USER 标头。
重要
标头没有在 OAuth 请求中签名,因此可以伪造。具有有效消费者密钥的任何人都可以模拟任何 Foreman 用户。

3.3.2. 发出 OAuth 请求

通常,OAuth 客户端库用于生成请求。此处显示了使用 curl 的 OAuth 请求示例,以帮助了解它的工作原理。

例 3.1. 使用 curl 的 OAuth 请求示例

$ curl 'https://satellite6.example.com/api/architectures' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json,version=2' \
-H 'FOREMAN-USER: User1' \
-H 'Authorization: OAuth oauth_version="1.0",oauth_consumer_key="secretkey",oauth_signature_method="hmac-sha1",oauth_timestamp=1321473112,oauth_signature=Il8hR8/ogj/XVuOqMPB9qNjSy6E='
Copy to Clipboard Toggle word wrap
在上例中,使用 OAuth 进行身份验证来列出上述架构。以具有登录用户 1 的用户的身份尝试该请求。如果在 Foreman 设置中启用映射,则结果将仅包含用户 User1 可以看到的架构。请注意,签名是手动构建的,这应该会随任何 oauth_timestamp 更改而改变。另外,签名也会反映每个参数、HTTP 方法和 URI 更改。因此,建议您使用 OAuth 客户端库来构造所有 OAuth 参数。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat