第 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)机制。可以在资源上创建操作,例如存储库,前者为您提供了针对该命名空间的正确角色(Admin 或 Creator)。即使 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 来通过浏览器连接到 GET
、POST
、DELETE
和 PUT
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 应用。
流程
- 在主页上,选择一个机构。
- 在导航窗格中,选择 Applications。
- 单击应用程序的名称,如 Test application。
- 在导航窗格中,选择 Generate Token。
选中以下选项的复选框:
- 管理组织.选择后,允许用户管理机构,包括创建机器人、创建团队、调整团队成员资格和更改计费设置。
- 管理存储库.选择后,提供对授予用户有权访问的所有存储库的管理员访问权限。
- 创建存储库。选择后,允许用户在授予用户创建存储库的任何命名空间中创建存储库。
- 查看所有可见的存储库。选择后,用户可以查看和拉取授予用户可见的所有存储库。
- 对任何可访问的存储库进行读/写。选择后,允许用户查看、推送和拉取到授予用户具有写入访问权限的所有存储库。
- 超级用户访问.选择后,为用户提供了管理安装的能力,包括管理用户、管理超级用户面板中的机构和其他功能。
- 选择了用户时,允许用户管理您的帐户,包括创建机器人并将其权限授予您的存储库。
- 读取用户信息.选择后,为用户提供读取用户信息(如用户名和电子邮件地址)的能力。
- 单击 Generate Access Token。您将被重定向到新页面。
- 查看您允许的权限,然后点 授权应用程序。点 Authorize Application 确认您的决定。
您将被重定向到 Access Token 页面。复制并保存访问令牌。
重要这是复制并保存访问令牌的唯一机会。在离开此页面后,无法恢复它。