12.3. 为 Red Hat Quay 机器人令牌交换 OAuth2 访问令牌
以下流程利用 上一步中生成的访问令牌
来创建新的 Red Hat Quay 机器人帐户令牌。新的 Red Hat Quay 机器人帐户令牌用于您的 OIDC 供应商和 Red Hat Quay 间的身份验证。
注意
以下示例使用 Python 脚本为 Red Hat Quay 机器人令牌交换 OAuth2 访问令牌。
先决条件
-
已安装
python3
CLI 工具。
流程
将以下 Python 脚本保存到
.py
文件中,如robot_fed_token_auth.py
import requests import os TOKEN=os.environ.get('TOKEN') robot_user = "fed-test+robot1" def get_quay_robot_token(fed_token): URL = "https://<quay-server.example.com>/oauth2/federation/robot/token" response = requests.get(URL, auth=(robot_user,fed_token)) 1 print(response) print(response.text) if __name__ == "__main__": get_quay_robot_token(TOKEN)
- 1
- 如果您的 Red Hat Quay 部署使用自定义 SSL/TLS 证书,则响应必须是
response = requests.get (URL,auth=(robot_user,fed_token),verify=False)
,其中包括verify=False
标志。
将 OAuth2 访问令牌导出为
TOKEN
。例如:$ export TOKEN = eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJTVmExVHZ6eDd2cHVmc1dkZmc1SHdua1ZDcVlOM01DN1N5T016R0QwVGhVIn0...
输入以下命令运行
robot_fed_token_auth.py
脚本:$ python3 robot_fed_token_auth.py
输出示例
<Response [200]> {"token": "291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJlbWFpbF92ZXJpZ..."}
重要此令牌在一小时后过期。一小时后,必须生成新的令牌。
将机器人帐户访问令牌导出为
QUAY_TOKEN
。例如:$ export QUAY_TOKEN=291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJlbWFpbF92ZXJpZ