红帽 API 入门
目录
将 API 用于红帽服务
用于红帽服务的 API 可帮助您更有效地跟踪和自动化:
* 订阅和权利
* 用户帐户和权限
Account Management API 可能会涉及个人信息的处理。在使用这个 API 前,请确保您有权处理这些账户所涉及人员的个人信息。
先决条件
红帽 API 使用 OAuth 2.0 进行授权。要获取令牌并访问 API,您需要以下信息:
- 离线令牌可以在 API 令牌页中生成(用户需要具有
View/Renew Subscription Information权限) - 客户端 ID = rhsm-api
- 令牌 URL = https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token
- 安装了 jq 来处理 JSON 对象:
- jq 是一个命令行 JSON 处理器,可以使用 yum 命令安装:sudo yum install jq
生成一个新的离线令牌
离线令牌永远不会过期,只要它至少每 30 天使用一次,且用来创建访问令牌。它可以作为密码使用,允许您继续验证您的帐户,而无需创建新的刷新令牌。
警告:请使用与网络最佳实践一致的密码管理。以纯文本形式存储任何密码或凭证永远都是不安全的。使用与密码相同的安全措施来对待离线令牌,以防止它被未授权使用。
要生成一个离线令牌,请访问 API Tokens 页面,然后点 Generate Token 按钮。
生成一个访问令牌
创建离线令牌后,您可以使用该令牌创建一个新的刷新令牌,其包括一个在十五分钟内有效的访问令牌。访问令牌在标头中传递,以验证您的客户门户网站用户。
警告:请使用与网络最佳实践一致的密码管理。以纯文本形式存储任何密码或凭证永远都是不安全的。
Set the offline token value (in this example, we set it in plaintext and shorten the token value for clarity)
# offline_token='eyJhbGciOiJSUzI1NiIsInR5cCIgOiA'
# curl https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token -d grant_type=refresh_token -d client_id=rhsm-api -d refresh_token=$offline_token
您应该看到类似如下的输出,其中 access_token 将用作授权令牌:
{"access_token":"......YsGz2W0_tMuLG7NYS_Ia3vWAVuK--Uv5cAQ","expires_in":900,"refresh_expires_in":0,"refresh_token":"......_Ns-lnigJkUlQZUzt7JI","token_type":"bearer","not-before-policy":0,"session_state":"......-6f3704c84422","scope":"offline_access"}%
access_token 需要被设置为/用作授权令牌,来执行 API 调用。
# token=$(curl https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token -d grant_type=refresh_token -d client_id=rhsm-api -d refresh_token=$offline_token | jq --raw-output .access_token)
使用令牌执行一个 API 调用
列出 100 个系统的 API 调用示例:
# curl -H "Authorization: Bearer $token" "https://api.access.redhat.com/management/v1/systems?limit=100"
可选的 CLI 工具支持
安装一个 JSON 格式工具,如 jq 或可选的 json_reformat,以接收 API 调用的更多结构化的返回。
- json_reformat 是一个命令行 JSON 格式化程序,它符合 Red Hat Enterprise Linux 上的标准。
熟悉支持 OAuth 2.0 的 标准 OIDC 库 的开发人员可以使用这些库将对 Red Hat Subscription Management API 的授权构建到脚本和应用程序。
用于测试 API 或用于不太频繁访问 API 的用户的一个选项将使用 REST 客户端。只要您的 REST 客户端支持 OAuth 2.0 或自定义表单提交,您就可以使用该客户端访问 API。一些包括 Postman、Advanced REST Client 和 Restlet的流行 REST 客户端的示例。
访问可用的 Red Hat API
红帽提供了一个 Swagger 文件来描述规范。Swagger 规范包含有关可用的 API 端点、输入参数、期望的输出和可能的错误响应的信息。swagger 文件可以导入到像 Postman 或 RESTlet 这样的 REST 客户端,来自动构建 API 调用的库。Red Hat API Swagger 文档可在本文档底部链接的 Red Hat API Tokens 和 Swagger 文档页中找到
联系红帽
如果您遇到问题并需要支持,请 开一个支持问题单。
下载资源和 Swagger 文档
故障排除
-
从 https://access.redhat.com/management/api 中获取 offline_token
-
设置离线令牌:
# offline_token='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
* Verify it's set:
# echo $offline_token
-
获取访问令牌
# curl https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token -d grant_type=refresh_token -d client_id=rhsm-api -d refresh_token=$offline_token -
使用之前创建的函数获取访问令牌
# token=$(curl https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token -d grant_type=refresh_token -d client_id=rhsm-api -d refresh_token=$offline_token | jq --raw-output .access_token)-
验证 access_token 是否已设置
# echo $token
-
-
执行一个 API 调用:
# curl -H "Authorization: Bearer $token" "https://api.access.redhat.com/management/v1/systems?limit=100"
Comments