10.3. OAuth 2 令牌身份验证
OAuth (Open Authorization)是基于令牌的身份验证和授权的公开标准。OAuth 2 身份验证通常用于以编程方式与自动化控制器 API 交互。与基本身份验证类似,您可以通过 Authorization 标头为每个 API 请求提供一个 OAuth 2 令牌。与基本身份验证不同,OAuth 2 令牌有一个可配置的超时,并可范围。令牌具有可配置的过期时间,如果需要,可以为一个用户或管理员轻松撤销整个自动化控制器时间。您可以使用 revoke_oauth2_tokens 管理命令进行此操作,或使用 API 来完成此操作,如 Revoke a access token 所述。
在自动化控制器中获取 OAuth2 访问令牌的不同方法包括:
- 个人访问令牌(PAT)
- 应用程序令牌:密码授权类型
- 应用程序令牌:隐性授权类型
- 应用程序令牌:授权代码授权类型
用户需要在 API 或平台网关 UI 的
在本例中,使用 PAT 方法在 API 中创建令牌。创建后,您可以设置范围。
您可以在系统范围内配置令牌的过期时间。如需更多信息,请参阅使用 基于令牌的身份验证配置对外部应用程序的访问。
令牌身份验证最适合用于自动化控制器 API 的任何编程使用,如 Python 脚本或 curl 等工具。
curl 示例
curl -u user:password -k -X POST https://<controller-host>/api/v2/tokens/
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/
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/
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 脚本,如下例所示:
其他资源
有关获取 OAuth2 访问令牌以及如何在外部应用上下文中使用 OAuth 2 的更多信息,请参阅使用 基于令牌的身份验证配置对外部应用程序的访问。
启用外部用户创建 OAuth 2 令牌
默认情况下,通过单点登录创建的外部用户无法为安全目的生成 OAuth 令牌。
流程
-
在导航面板中,选择
。 - 选择 。
- 启用 选项,以允许外部用户创建 OAuth2 令牌。