搜索

10.3. OAuth 2 令牌身份验证

download PDF

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 数据,如下所示:

API OAuth2 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 令牌。

流程

  1. 在导航面板中,选择 Settings
  2. 系统 选项列表中选择 Miscellaneous Authentication settings
  3. 启用 选项 ,以允许外部用户创建 OAuth2 令牌
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.