如何使用 GitHub 应用程序向 GitHub 容器注册表进行身份验证?

问题描述 投票:0回答:1

根据 GitHub 文档,您只能通过个人访问令牌或 GITHUB_TOKEN(仅在 GitHub 操作中可用)向 GitHub 容器注册表进行身份验证。 GITHUB_TOKEN 是 GitHub 应用程序的安装访问令牌。

当您启用 GitHub Actions 时,GitHub 会在您的存储库上安装 GitHub 应用程序。 GITHUB_TOKEN 密钥是 GitHub 应用程序安装访问令牌。 [来源]

是否可以使用另一个 GitHub 应用程序的安装访问令牌来对 GitHub 容器注册表进行身份验证?

github github-actions github-api github-app github-container-registry
1个回答
0
投票

我成功通过了 github 容器注册表的身份验证。 但是我无法让它拉取或推送任何容器图像。

查看REST API文档: https://docs.github.com/en/rest/packages/packages?apiVersion=2022-11-28#get-a-package-for-an-organization

它并没有说它可以与 github 应用程序一起使用,就像它对该端点所做的那样: https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#list-organization-repositories

根据我的经验,github 中的一些内容没有很好的记录,所以我确实尝试过,但最终我无法让它工作。

我成功使用

docker login
和 github 应用程序令牌登录,但在尝试推送图像时仍然被包权限阻止。

这就是我至少能够登录的方法:

  1. 为 github 应用程序生成 JWT:https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generate-a-json-web-token-jwt-对于-github-app
  2. 创建访问令牌:https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generate-an-installation-access-token-for-a- github-应用程序
  3. 通过 docker 登录:
    docker login ghcr.io -u <YOUR_GITHUB_APP_ID>
    ,当提示输入密码时,输入步骤 2 中响应中的令牌。

我的问题可能是该应用程序安装在组织上,但我没有足够的权限。当您在响应中生成访问令牌时,您将看到它具有何种权限。为了让它工作,我想它应该在“权限”中有“包”

这是我在回复中得到的内容:

{
  "token": "<redacted>",
  "expires_at": "2023-08-11T08:44:17Z",
  "permissions": {
    "contents": "read",
    "metadata": "read",
    "packages": "write"
  },
  "repository_selection": "all"
}

但是在尝试推送图像时仍然失败:

denied: permission_denied: installation not allowed to Create organization package
© www.soinside.com 2019 - 2024. All rights reserved.