第 10 章 在 API 中进行身份验证


您可以在 API 中使用以下验证方法:

自动化控制器专为机构设计,通过可视化仪表板来集中和控制其自动化,以进行开箱即用的控制,同时提供 REST API 以在更深入的级别上与其他工具集成。自动化控制器支持多种身份验证方法,可以轻松地将自动化控制器嵌入到现有工具和流程中。这可确保适当的人员可以访问其资源。

10.1. 使用会话身份验证

在直接登录到自动化控制器的 API 或 UI 时,您可以使用会话身份验证来手动创建资源,如清单、项目和作业模板,并在浏览器中启动作业。使用这个方法,您可以长时间保持登录,而不仅仅是该 HTTP 请求。例如,当在浏览器中(如 Chrome 或 Mozilla Firefox)中浏览 API 或 UI 时。当用户登录时,会创建一个会话 Cookie,这意味着当导航到自动化控制器中的不同页面时,它们可以保持登录。下图代表会话中客户端和服务器之间发生的通信:

会话身份验证架构

使用 curl 工具查看登录到自动化控制器时发生的活动。

流程

  1. 使用 GET 进入 /api/login/ 端点来获取 csrftoken cookie:

    $ curl -k -c - https://<gateway server name>/api/gateway/v1/login/
    
    $YOUR_AAP_URL FALSE / TRUE 1780539778 csrftoken GODXonA5LyV1uAs8zvcD2k12DQJC74oB
    Copy to Clipboard Toggle word wrap
  2. POST/api/login/ 端点,用户名、密码和 X-CSRFToken=<token-value>

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    
    --referer https://<gateway server name>/api/gateway/v1/login/ \
    
    -H 'X-CSRFToken: <token-value>' \
    
    --data 'username=admin&password=$YOUR_ADMIN_PASSWORD' \
    
    --cookie 'csrftoken=GODXonA5LyV1uAs8zvcD2k12DQJC74oB' \
    
    https://<gateway server name>/api/gateway/v1/login/ -k -D - -o /dev/null
    Copy to Clipboard Toggle word wrap
  3. 访问并测试需要身份验证的 API,如 /api/controller/v2/settings/all/
$ curl -X GET -H 'Cookie: <cookieID>;' https://<gateway server name>/api/controller/v2/settings/all/ -k
Copy to Clipboard Toggle word wrap

当您在浏览器中登录到 UI 或 API 时,所有这些都由自动化控制器完成,且只能在浏览器中进行身份验证时使用它。有关与自动化控制器的编程集成,请参阅 OAuth2 令牌身份验证

验证

下面显示了一个典型的响应:

Server: nginx
Date: <current date>
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
Location: /accounts/profile/
X-API-Session-Cookie-Name: awx_sessionid
Expires: <date>
Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private
Vary: Cookie, Accept-Language, Origin
Session-Timeout: 1800
Content-Language: en
X-API-Total-Time: 0.377s
X-API-Request-Id: 700826696425433fb0c8807cd40c00a0
Access-Control-Expose-Headers: X-API-Request-Id
Set-Cookie: userLoggedIn=true; Path=/
Set-Cookie: current_user=<user cookie data>; Path=/
Set-Cookie: csrftoken=<csrftoken>; Path=/; SameSite=Lax
Set-Cookie: awx_sessionid=<your session id>; expires=<date>; HttpOnly; Max-Age=1800; Path=/; SameSite=Lax
Strict-Transport-Security: max-age=15768000
Copy to Clipboard Toggle word wrap

当使用此方法成功验证用户时,服务器会使用名为 X-API-Session-Cookie-Name 的标头进行响应,指示会话 Cookie 的配置名称。默认值为 awx_session_id,稍后您可以在 Set-Cookie 标头中看到。

注意

您可以通过在 SESSION_COOKIE_AGE 参数中指定会话过期时间来更改会话过期时间。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部