10.3. OAuth 2 令牌身份验证
OAuth (Open Authorization)是基于令牌的身份验证和授权的公开标准。OAuth 2 身份验证通常用于以编程方式与自动化控制器 API 交互。与基本身份验证类似,您可以通过 Authorization 标头为每个 API 请求提供一个 OAuth 2 令牌。与基本身份验证不同,OAuth 2 令牌有一个可配置的超时,并可范围。令牌具有可配置的过期时间,如果需要,可以为一个用户或管理员轻松撤销整个自动化控制器时间。您可以使用 revoke_oauth2_tokens 管理命令进行此操作,也可以使用 API,如 Revoke an access token 所述。
在自动化控制器中获取 OAuth2 访问令牌的不同方法包括:
- 个人访问令牌(PAT)
- 应用程序令牌:密码授权类型
- 应用程序令牌:隐性授权类型
- 应用程序令牌:授权代码授权类型
用户需要在 API 或自动化控制器 UI 的 Users > Tokens 选项卡中创建 OAuth 2 令牌。有关通过 UI 创建令牌的更多信息,请参阅 用户 - 令牌。
在本例中,使用 PAT 方法在 API 中创建令牌。创建后,您可以设置范围。
您可以在系统范围内配置令牌的过期时间。如需更多信息,请参阅 将 OAuth 2 令牌系统用于个人访问令牌。
令牌身份验证最适合用于自动化控制器 API 的任何编程使用,如 Python 脚本或 curl 等工具。
curl 示例
curl -u user:password -k -X POST https://<controller-host>/api/v2/tokens/
此调用返回 JSON 数据,如下所示:
您可以使用 token
属性的值为自动化控制器资源执行 GET
请求,如 Hosts :
curl -k -X POST \ -H “Content-Type: application/json” -H “Authorization: Bearer <oauth2-token-value>” \ https://<controller-host>/api/v2/hosts/
您还可以通过向要启动的作业模板发布 POST
来运行作业:
curl -k -X POST \ -H "Authorization: Bearer <oauth2-token-value>" \ -H "Content-Type: application/json" \ --data '{"limit" : "ansible"}' \ https://<controller-host>/api/v2/job_templates/14/launch/
Python 示例
awxkit 是一个开源工具,可以轻松地使用 HTTP 请求来访问自动化控制器 API。您可以使用 awxkit login 命令代表您使用 awxkit 登录命令获得 PAT。如需更多信息,请参阅 AWX 命令行界面。
如果您需要编写自定义请求,您可以使用 Python 库请求编写 Python 脚本,如下例所示:
import requests oauth2_token_value = 'y1Q8ye4hPvT61aQq63Da6N1C25jiA' # your token value from controller url = 'https://<controller-host>/api/v2/users/' payload = {} headers = {'Authorization': 'Bearer ' + oauth2_token_value,} # makes request to controller user endpoint response = requests.request('GET', url, headers=headers, data=payload, allow_redirects=False, verify=False) # prints json returned from controller with formatting print(json.dumps(response.json(), indent=4, sort_keys=True))
其他资源
有关获取 OAuth2 访问令牌以及如何在外部应用上下文中使用 OAuth 2 的更多信息,请参阅 自动化控制器管理指南中的基于令牌的身份验证。https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.4/html-single/automation_controller_administration_guide/index#assembly-controller-token-based-authentication
启用外部用户创建 OAuth 2 令牌
默认情况下,通过单点登录创建的外部用户无法为安全目的生成 OAuth 令牌。
流程
- 在导航面板中,选择 。
- 从 系统 选项列表中选择 Miscellaneous Authentication settings。
- 启用 选项 ,以允许外部用户创建 OAuth2 令牌。