4.2. 使用 REST API 进行身份验证
API 调用需要通过 API 令牌进行身份验证。假设您使用 API_TOKEN
作为变量名称,请将 -H "Authorization: Bearer ${API_TOKEN}"
添加到 API 调用中以与 REST API 进行身份验证。
注意
API 令牌在 15 分钟后过期。
先决条件
-
您已生成了
OFFLINE_TOKEN
变量。
流程
在命令行终端上,使用
OFFLINE_TOKEN
设置API_TOKEN
变量来验证用户。$ export API_TOKEN=$( \ curl \ --silent \ --header "Accept: application/json" \ --header "Content-Type: application/x-www-form-urlencoded" \ --data-urlencode "grant_type=refresh_token" \ --data-urlencode "client_id=cloud-services" \ --data-urlencode "refresh_token=${OFFLINE_TOKEN}" \ "https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token" \ | jq --raw-output ".access_token" \ )
确认
API_TOKEN
变量定义:$ echo ${API_TOKEN}
在您的路径中为令牌生成方法创建一个脚本。例如:
$ vim ~/.local/bin/refresh-token
export API_TOKEN=$( \ curl \ --silent \ --header "Accept: application/json" \ --header "Content-Type: application/x-www-form-urlencoded" \ --data-urlencode "grant_type=refresh_token" \ --data-urlencode "client_id=cloud-services" \ --data-urlencode "refresh_token=${OFFLINE_TOKEN}" \ "https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token" \ | jq --raw-output ".access_token" \ )
然后保存文件。
更改文件模式使其可执行:
$ chmod +x ~/.local/bin/refresh-token
刷新 API 令牌:
$ source refresh-token
运行以下命令验证您可以访问 API:
$ curl -s https://api.openshift.com/api/assisted-install/v2/component-versions -H "Authorization: Bearer ${API_TOKEN}" | jq
输出示例
{ "release_tag": "v2.11.3", "versions": { "assisted-installer": "registry.redhat.io/rhai-tech-preview/assisted-installer-rhel8:v1.0.0-211", "assisted-installer-controller": "registry.redhat.io/rhai-tech-preview/assisted-installer-reporter-rhel8:v1.0.0-266", "assisted-installer-service": "quay.io/app-sre/assisted-service:78d113a", "discovery-agent": "registry.redhat.io/rhai-tech-preview/assisted-installer-agent-rhel8:v1.0.0-195" } }