第 2 章 OAuth 2 访问令牌


OAuth 2 访问令牌(包括 Red Hat Quay 的 "API 令牌")启用对 Red Hat Quay API 的用户身份验证访问,适用于需要用户身份验证的应用程序。这些令牌通过 OAuth 2 授权过程获得,其中 Red Hat Quay 管理员代表自己或其他用户生成令牌来访问 Red Hat Quay API 端点。OAuth 2 令牌根据为令牌定义的范围来授权对 API 端点的操作。

注意

虽然 OAuth 2 令牌根据令牌定义的范围来授权对 API 端点的操作,但访问资源本身取决于 Red Hat Quay 基于角色的访问控制(RBAC)机制。可以在资源上创建操作,例如存储库,前者为您提供了针对该命名空间的正确角色(AdminCreator)。即使 API 令牌被授予了 repo:admin 范围,也是如此。

OAuth 2 访问令牌只能通过 Red Hat Quay UI 创建;无法使用 CLI 创建 OAuth 2 访问令牌。在创建 OAuth 2 令牌时,可以为令牌拥有者选择以下选项:

  • 管理组织.选择后,允许用户管理机构,包括创建机器人、创建团队、调整团队成员资格和更改计费设置。
  • 管理存储库.选择后,提供对授予用户有权访问的所有存储库的管理员访问权限。
  • 创建存储库。选择后,允许用户在授予用户创建存储库的任何命名空间中创建存储库。
  • 查看所有可见的存储库。选择后,用户可以查看和拉取授予用户可见的所有存储库。
  • 对任何可访问的存储库进行读/写。选择后,允许用户查看、推送和拉取到授予用户具有写入访问权限的所有存储库。
  • 超级用户访问.选择后,为用户提供了管理安装的能力,包括管理用户、管理超级用户面板中的机构和其他功能。
  • 选择了用户时,允许用户管理您的帐户,包括创建机器人并将其权限授予您的存储库。
  • 读取用户信息.选择后,为用户提供读取用户信息(如用户名和电子邮件地址)的能力。

令牌经销商应注意,他们在代表用户生成令牌时授予其授权,并且在授予了管理机构、Super User Access管理用户 等权限前,用户应具有绝对信任。此外,访问令牌仅在创建时显示;它们无法通过 CLI 列出,也无法在 Red Hat Quay UI 中找到。如果访问令牌丢失或忘记,则必须创建新令牌;无法恢复令牌。

OAuth 2 访问令牌在 API 调用的 Authorization 标头中作为 Bearer 令牌传递,因此,用于向定义的 API 端点提供身份验证和授权,如镜像标签、存储库、机构等。

该 API 位于 Red Hat Quay 主机的 /api/v1 端点中。例如: https://<quay-server.example.com>/api/v1。它允许用户通过其浏览器连接到端点,通过启用 Swagger UI 来通过浏览器连接到 GETPOSTDELETEPUT Red Hat Quay 设置。API 可以被发出 API 调用的应用访问,并使用 OAuth 令牌,它将数据作为 JSON 发送和接收数据。

使用 Red Hat Quay 时,目前无法在 OAuth 2 访问令牌上轮转或设置过期时间,令牌生命周期为 10 年。当令牌被泄露时,可以通过删除创建令牌的应用程序来删除令牌。但是,这会删除在该特定应用程序内所做的所有令牌。

注意

在实践中,Red Hat Quay 管理员可以在每次要为用户创建新 OAuth 令牌时,在组织的 Applications 页面中创建新的 OAuth 应用程序。这将确保单个应用不负责所有 OAuth 令牌。因此,如果用户的令牌被破坏,管理员将删除被入侵令牌的应用。这有助于避免对令牌可能属于同一应用的其他用户造成中断。

以下小节介绍了如何生成和重新分配 OAuth 2 访问令牌。

2.1. 创建 OAuth 2 访问令牌

使用 Red Hat Quay 时,您必须创建一个 OAuth 2 访问令牌,然后才能访问机构的 API 端点。OAuth 2 访问令牌只能通过 Red Hat Quay UI 生成;CLI 无法用于生成 OAuth 2 访问令牌。

使用以下步骤创建 OAuth2 访问令牌。

先决条件

  • 您已以管理员身份登录到 Red Hat Quay。
  • 您已创建了 OAuth 2 应用。

流程

  1. 在主页上,选择一个机构。
  2. 在导航窗格中,选择 Applications
  3. 单击应用程序的名称,如 Test application
  4. 在导航窗格中,选择 Generate Token
  5. 选中以下选项的复选框:

    1. 管理组织.选择后,允许用户管理机构,包括创建机器人、创建团队、调整团队成员资格和更改计费设置。
    2. 管理存储库.选择后,提供对授予用户有权访问的所有存储库的管理员访问权限。
    3. 创建存储库。选择后,允许用户在授予用户创建存储库的任何命名空间中创建存储库。
    4. 查看所有可见的存储库。选择后,用户可以查看和拉取授予用户可见的所有存储库。
    5. 对任何可访问的存储库进行读/写。选择后,允许用户查看、推送和拉取到授予用户具有写入访问权限的所有存储库。
    6. 超级用户访问.选择后,为用户提供了管理安装的能力,包括管理用户、管理超级用户面板中的机构和其他功能。
    7. 选择了用户时,允许用户管理您的帐户,包括创建机器人并将其权限授予您的存储库。
    8. 读取用户信息.选择后,为用户提供读取用户信息(如用户名和电子邮件地址)的能力。
  6. 单击 Generate Access Token。您将被重定向到新页面。
  7. 查看您允许的权限,然后点 授权应用程序。点 Authorize Application 确认您的决定。
  8. 您将被重定向到 Access Token 页面。复制并保存访问令牌。

    重要

    这是复制并保存访问令牌的唯一机会。在离开此页面后,无法恢复它。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.