第 3 章 使用基于令牌的身份验证配置对外部应用程序的访问
基于令牌的身份验证允许通过集成的 OAuth 2 令牌支持通过平台验证第三方工具和服务。Ansible Automation Platform 使用 OAuth 令牌和个人访问令牌(PAT)。
- OAuth 令牌
- OAuth 令牌与特定应用程序相关联,允许应用在不披露用户登录信息的情况下访问数据。
- 个人访问令牌
- PAT 是用户个人,不绑定到特定应用程序。它们由用户直接创建,以供他们使用。
访问令牌的默认过期时间从 1000 年更新至 1 年。此更改可确保频繁的令牌轮转,以增强凭证安全性。
控制器 2.4 及之前版本平台网关中的访问令牌在 1000 年内有效。在 2.5.20250604 补丁版本之前创建的任何现有令牌都将保留 1000 年过期。
您可以通过修改 settings.py 文件中的过期时间来自定义此设置来满足您的特定要求,如下所示:
OAUTH2_PROVIDER__ACCESS_TOKEN_EXPIRE_SECONDS = 31536000
OAUTH2_PROVIDER__ACCESS_TOKEN_EXPIRE_SECONDS = 31536000
有关 settings.py 文件以及如何用来配置平台方面的更多信息,请参阅操作 Ansible Automation Platform 中的 settings.py。
有关 OAuth2 规格的更多信息,请参阅 OAuth 2.0 授权框架。
有关使用 manage 实用程序创建令牌的更多信息,请参阅 令牌和会话管理。
3.1. 应用程序 复制链接链接已复制到粘贴板!
为外部应用(如 ServiceNow 和 Jenkins)创建和配置基于令牌的身份验证。通过基于令牌的身份验证,外部应用程序可以轻松地与 Ansible Automation Platform 集成。
2.4 到 2.5 的迁移不支持平台 UI 上的自动化控制器 OAuth 应用程序。如需更多信息 ,请参阅本知识库文章。
作为平台管理员,您可以在平台中配置自定义外部应用程序 URL,从而提供与外部服务的无缝集成。此功能目前作为技术预览提供。配置后,外部应用程序 URL 会显示在平台 UI 导航面板中,为用户提供轻松访问应用程序。此功能通过确保从平台 UI 中快速访问外部服务来简化工作流。
技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
使用 OAuth 2,您可以使用令牌与应用程序共享数据,而无需公开登录信息。您可以将这些令牌配置为只读。
您可以创建一个代表您要与之集成的外部应用程序的应用程序,然后使用它为应用程序创建令牌,以代表其用户使用。
将这些令牌与应用程序资源关联,您可以管理为特定应用程序发布的所有令牌。通过在 OAuth Applications 下分离令牌问题,您可以根据应用程序撤销所有令牌,而无需撤销系统中的所有令牌。
3.1.1. OAuth 应用入门 复制链接链接已复制到粘贴板!
您可以通过选择 ,从导航面板中访问 页面。您可以在那里查看、创建、排序和搜索当前由 Ansible Automation Platform 和自动化控制器管理的应用程序。
如果不存在应用程序,您可以通过单击 来创建一个。
应用的访问规则如下:
- 平台管理员可以查看和操作系统中的所有应用程序。
- 平台审核员只能查看系统中的应用程序。
- 另一方面,令牌是用于验证传入请求并屏蔽底层用户权限的资源。
令牌的访问规则如下:
- 用户可以为自己创建个人访问令牌。
- 平台管理员可以查看和操作系统中的每个令牌。
- 平台审核员只能查看系统中的令牌。
- 其他普通用户只能查看和操作自己的令牌。
用户只能在创建时查看令牌或刷新令牌值。
3.1.1.1. 应用程序功能 复制链接链接已复制到粘贴板!
有几个 OAuth 2 实用程序可用于授权、令牌刷新和撤销。您可以在创建应用程序时指定以下授权类型:
- 密码
- 此授权类型非常适合拥有对 Web 应用的原生访问权限,当客户端是资源所有者时必须使用。
- 授权代码
- 当访问令牌必须直接签发给外部应用或服务时,应使用此授权类型。
在使用应用程序时,您只能使用授权代码类型来获取访问令牌。当将外部 Web 应用程序与 Ansible Automation Platform 集成时,该 web 应用程序可能需要为该应用程序中的用户创建 OAuth2 令牌。使用授权代码授权类型在平台中创建应用程序是执行此操作的首选方法,因为:
- 这允许外部应用程序使用用户的凭证从 Ansible Automation Platform 获取令牌。
- 为特定应用程序发布的令牌部分化使这些令牌能够轻松管理。例如,撤销与该应用程序 关联的所有 令牌,而无需撤销系统中的所有令牌。
3.1.1.1.1. 过期后请求访问令牌 复制链接链接已复制到粘贴板!
访问令牌的默认过期时间为 1 年。
使用授权代码授权类型设置应用程序集成的最佳方法是允许这些跨站点请求的源。 通常,您必须列出您要与平台集成的服务或应用程序,以便提供访问令牌。
要做到这一点,您的管理员将允许列表添加到其本地 Ansible Automation Platform 设置文件中:
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOWED_ORIGIN_REGEXES = [
r"http://django-oauth-toolkit.herokuapp.com*",
r"http://www.example.com*"
]
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOWED_ORIGIN_REGEXES = [
r"http://django-oauth-toolkit.herokuapp.com*",
r"http://www.example.com*"
]
其中 http://django-oauth-toolkit.herokuapp.com 和 http://www.example.com 是需要令牌才能访问平台的应用程序。
3.1.2. 创建新应用程序 复制链接链接已复制到粘贴板!
当将外部 Web 应用程序与 Ansible Automation Platform 集成时,Web 应用程序可能需要代表 web 应用程序的用户创建 OAuth2 令牌。
使用 Authorization Code 授权类型创建应用程序是这样做的首选方法:
- 外部应用程序可以使用用户的凭证获取令牌。
- 为特定应用程序发布的令牌部分化,可以轻松地管理这些令牌。例如,撤销与该应用程序关联的所有令牌。
流程
-
在导航面板中,选择
。 - 单击 。Create Application 页面将打开。
输入以下详情:
- Name
- (必需)输入您要创建的应用程序的名称。
- URL
- (可选)输入外部应用程序的 URL。此链接添加到导航面板中以便轻松访问。此设置目前仅作为技术预览提供。
- 描述
- (可选)包含应用程序的简短描述。
- 机构(Organization)
- (必需)选择一个与这个应用程序关联的机构。
- 授权授权类型
- (必需)选择用于用户获取此应用程序的令牌的授权类型之一。如需更多信息,请参阅应用程序功能 以了解有关授权类型的更多信息。
- 客户端类型
- (必需)选择客户端设备的安全性级别。
- 重定向 URIS
- 提供允许的 URI 列表,用空格分开。如果您将授权类型指定为授权代码,则需要此项。
点 ,或者点击 以取消您的更改。
客户端 ID 和客户端 Secret 显示在窗口中。这将是唯一显示客户端机密的时间。
注意只有在 Client type 设为 机密 时,才会创建 Client Secret。
- 点复制图标并保存客户端 ID 和客户端 secret,将外部应用程序与 Ansible Automation Platform 集成。