3.2. 添加令牌


您可以通过在 OAuth Applications 详情页面中选择 Tokens 选项卡来查看具有令牌来访问应用的用户列表。

注意

您只能为您自己的用户创建 OAuth 2 Tokens,这意味着您只能从您自己的用户配置集配置或查看令牌。

配置身份验证令牌后,您可以选择与令牌关联的应用,以及令牌具有的访问级别。

流程

  1. 在导航面板中,选择 Access Management Users
  2. 选择用户配置集的用户名来配置 OAuth 2 令牌。
  3. 选择 Tokens 选项卡。

    当没有令牌时,Tokens 屏幕会提示您添加它们。

  4. Create token 打开 Create Token 窗口。
  5. 输入以下详情:

    Application

    输入您要将令牌与之关联的应用程序的名称。或者,您可以通过单击 Browse 进行搜索。这会打开一个单独的窗口,供您从可用选项中选择。如果列表太长,请从过滤器列表中选择 Name 以根据名称过滤。

    注意

    要创建没有链接到任何应用程序的个人访问令牌(PAT),请将 Application 字段留空。

    描述
    (可选)为您的令牌提供简短描述。
    影响范围

    (必需)指定此令牌具有的访问级别。OAuth 2 令牌的范围可以设置为以下之一:

    • Write: 允许使用这个令牌发送的请求在系统中添加、编辑和删除资源。
    • : 限制操作为只读。请注意,写入范围包含读取范围。
  6. Create token,或者点击 Cancel 以取消您的更改。

    Token 信息显示 TokenRefresh Token 信息,以及令牌的到期日期。这将是唯一显示令牌和刷新令牌的时间。您可以从列表视图查看令牌关联和令牌信息。

  7. 点复制图标并保存令牌和刷新令牌供以后使用。

验证

您可以使用 Applications 详情页面中的 Tokens 选项卡验证应用程序现在显示具有适当令牌的用户。

  1. 在导航面板中,选择 Access Management OAuth Applications
  2. Applications 列表视图中选择您要验证的应用程序。
  3. 选择 Tokens 选项卡。

    您的令牌应显示在与您选择的应用程序关联的令牌列表中。

其他资源

3.2.1. 应用程序令牌功能

对于 /o/ 端点中的令牌,刷新和撤销 与令牌关联的刷新和撤销功能目前只能使用应用令牌执行。

3.2.1.1. 刷新现有访问令牌

以下示例显示了提供有刷新令牌的现有访问令牌:

{
    "id": 35,
    "type": "access_token",
    ...
    "user": 1,
    "token": "omMFLk7UKpB36WN2Qma9H3gbwEBSOc",
    "refresh_token": "AL0NK9TTpv0qp54dGbC4VUZtsZ9r8z",
    "application": 6,
    "expires": "2017-12-06T03:46:17.087022Z",
    "scope": "read write"
}
Copy to Clipboard Toggle word wrap

/o/token/ 端点用于刷新访问令牌:

curl -X POST \
    -d "grant_type=refresh_token&refresh_token=AL0NK9TTpv0qp54dGbC4VUZtsZ9r8z" \
    -u "gwSPoasWSdNkMDtBN3Hu2WYQpPWCO9SwUEsKK22l:fI6ZpfocHYBGfm1tP92r0yIgCyfRdDQt0Tos9L8a4fNsJjQQMwp9569eIaUBsaVDgt2eiwOGe0bg5m5vCSstClZmtdy359RVx2rQK5YlIWyPlrolpt2LEpVeKXWaiybo" \
    http://<gateway>/o/token/ -i
Copy to Clipboard Toggle word wrap

其中 refresh_token 由上述访问令牌的 refresh_token 字段提供。

身份验证信息的格式是 < client_id>:<client_secret >,其中 client_idclient_secret 是访问令牌底层相关应用程序的对应字段。

注意

特殊 OAuth 2 端点只支持使用 x-www-form-urlencoded Content-type,因此 /o passphrase 端点都不接受 application/json

成功时,会以 JSON 格式显示一个响应,其中包含新的(刷新的)访问令牌,其范围信息与前面的信息相同:

HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Tue, 05 Dec 2017 17:54:06 GMT
Content-Type: application/json
Content-Length: 169
Connection: keep-alive
Content-Language: en
Vary: Accept-Language, Cookie
Pragma: no-cache
Cache-Control: no-store
Strict-Transport-Security: max-age=15768000

{"access_token": "NDInWxGJI4iZgqpsreujjbvzCfJqgR", "token_type": "Bearer", "expires_in": 315360000000, "refresh_token": "DqOrmz8bx3srlHkZNKmDpqA86bnQkT", "scope": "read write"}
Copy to Clipboard Toggle word wrap

refresh 操作通过删除原始令牌替换现有令牌,然后立即创建新令牌,其范围和相关应用程序与原始令牌相同。

验证新令牌是否存在,并在 api/gateway/v1/tokens/ 端点中删除旧令牌。

3.2.1.2. 撤销访问令牌

您可以通过在平台 UI 中删除令牌或使用 /o/revoke-token/ 端点来撤销访问令牌。

通过此方法撤销访问令牌与删除令牌资源对象相同,但它允许您通过提供令牌值以及关联的 client_id (如果应用是 confidential)来删除令牌。例如:

curl -X POST -d "token=rQONsve372fQwuc2pn76k3IHDCYpi7" \
-u "gwSPoasWSdNkMDtBN3Hu2WYQpPWCO9SwUEsKK22l:fI6ZpfocHYBGfm1tP92r0yIgCyfRdDQt0Tos9L8a4fNsJjQQMwp9569eIaUBsaVDgt2eiwOGe0bg5m5vCSstClZmtdy359RVx2rQK5YlIWyPlrolpt2LEpVeKXWaiybo" \
http://<gateway>/o/revoke_token/ -i
Copy to Clipboard Toggle word wrap
注意
  • 特殊 OAuth 2 端点只支持使用 x-www-form-urlencoded Content-type,因此 /o passphrase 端点都不接受 application/json
  • Allow External Users to Create Oauth2 Tokens (ALLOW_OAUTH2_FOR_EXTERNAL_USERS in the API)设置被默认禁用。外部用户引用通过 LDAP 等服务或任何其他 SSO 服务等服务向外部进行身份验证的用户。此设置可确保外部用户无法创建自己的令牌。如果您启用然后禁用它,则同时由外部用户创建的令牌仍会存在,且不会自动撤销。此设置可以通过 Settings Platform 网关 菜单进行配置。

或者,要撤销 OAuth2 令牌,您可以使用 manage 实用程序,请参阅 撤销 oauth2 令牌

成功后,会显示响应 200 OK。通过检查 api/gateway/v1/tokens/ 端点中是否存在令牌来验证删除。

3.2.2. 令牌和会话管理

Ansible Automation Platform 支持以下 OAuth2 令牌管理命令:

3.2.2.1. create_oauth2_token

使用以下命令来创建 OAuth2 令牌(指定 example_user的用户名):

$ aap-gateway-manage create_oauth2_token --user example_user

New OAuth2 token for example_user: j89ia8OO79te6IAZ97L7E8bMgXCON2
Copy to Clipboard Toggle word wrap

确保您在创建令牌时提供有效的用户。否则,会显示在没有指定用户的情况下尝试发出命令的错误消息,或者提供不存在的用户名。

3.2.2.2. revoke_oauth2_tokens

使用此命令撤销 OAuth2 令牌,包括应用程序令牌和个人访问令牌(PAT)。它撤销所有应用令牌(但不关联刷新令牌),并撤销所有个人访问令牌。但是,您还可以指定用于撤销所有令牌的用户。

使用以下命令撤销所有现有 OAuth2 令牌:

$ aap-gateway-manage revoke_oauth2_tokens
Copy to Clipboard Toggle word wrap

使用以下命令撤销所有 OAuth2 令牌及其刷新令牌:

$ aap-gateway-manage revoke_oauth2_tokens --revoke_refresh
Copy to Clipboard Toggle word wrap

使用 id=example_user (指定 example_user的用户名)为用户撤销所有 OAuth2 令牌:

$ aap-gateway-manage revoke_oauth2_tokens --user example_user
Copy to Clipboard Toggle word wrap

为具有 id=example_user 的用户撤销所有 OAuth2 令牌和刷新令牌:

$ aap-gateway-manage revoke_oauth2_tokens --user example_user --revoke_refresh
Copy to Clipboard Toggle word wrap

3.2.2.3. cleartokens

使用此命令清除已撤销的令牌。

如需更多信息,请参阅 Django 的 Oauth Toolkit 文档中的 cleartokens

3.2.2.4. clearsessions

使用此命令删除所有已过期的会话。

如需更多信息,请参阅 Django 的 Oauth Toolkit 文档中的 清除会话存储

有关在 UI 中有关 OAuth2 令牌管理的更多信息,请参阅 应用

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat