4.4. OAuth 身份验证概述
作为基本身份验证的替代选择,您可以使用有限的 OAuth 1.0a 身份验证。这有时被称为 1 legged OAuth。
要在 Satellite Web UI 中查看 OAuth 设置,请导航到 Administer > Settings > Authentication。OAuth consumer 密钥 是所有 OAuth 客户端要使用的令牌。
Satellite 将 OAuth 设置存储在 /etc/foreman/settings.yaml
文件中。使用 satellite-installer
脚本配置这些设置。
4.4.1. 配置 OAuth
使用 satellite-installer
更改 Satellite 服务器上的 OAuth 设置。输入以下命令列出所有与 OAuth 相关的安装程序选项:
# satellite-installer --full-help | grep oauth
启用 OAuth 用户映射
默认情况下,Satellite 授权所有 OAuth API 请求作为内置匿名 API 管理员帐户。因此,API 响应包括所有 Satellite 数据。但是,您还可以指定发出请求的 Satellite 用户,并限制对该用户的数据的访问。
要启用 OAuth 用户映射,请输入以下命令:
# satellite-installer --foreman-oauth-map-users true
Satellite 在 OAuth 请求中不为标头签名。具有有效消费者密钥的任何人都可以模拟任何 Satellite 用户。
4.4.2. OAuth 请求格式
每个 OAuth API 请求都需要带有现有 Satellite 用户的登录和 Authorization
标头的 FOREMAN-USER
标头,格式为:
--header 'FOREMAN-USER: My_User_Name' \ --header 'Authorization: OAuth oauth_version="1.0",oauth_consumer_key="secretkey",oauth_signature_method="hmac-sha1",oauth_timestamp=timestamp,oauth_signature=signature'
使用 OAuth 客户端库来构建所有 OAuth 参数。有关使用 requests_oauthlib Python 模块的示例,请参阅红帽知识库中的 通过 Red Hat Satellite 6 中的 python 脚本使用 OAuth 验证方法来执行 API 调用。
Example
本例使用 OAuth 进行身份验证列出了架构。请求在 FOREMAN-USER
标头中使用 My_User_Name 用户名。将 --foreman-oauth-map-users
设置为 true
时,响应只包含用户可访问的架构。签名反映了每个参数、HTTP 方法和 URI 更改。
请求示例:
$ curl 'https://satellite.example.com/api/architectures' \ --header 'Content-Type: application/json' \ --header 'Accept:application/json' \ --header 'FOREMAN-USER: My_User_Name' \ --header 'Authorization: OAuth oauth_version="1.0",oauth_consumer_key="secretkey",oauth_signature_method="hmac-sha1",oauth_timestamp=1321473112,oauth_signature=Il8hR8/ogj/XVuOqMPB9qNjSy6E='