您可以使用 Github 应用程序生成的 UAT(用户访问令牌)作为在 Github API 中创建公共 ssh 密钥端点的身份验证吗?

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

我正在开发一个项目,让用户生成个人访问令牌是没有意义的。用户犯错的空间太大,因为他们必须选择正确的权限并手动复制粘贴。

我更喜欢通过 Github 应用程序进行身份验证。有关于如何执行此操作的文档,并且我已经验证它们确实有效:https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generate- a-github-app 的用户访问令牌#使用 web 应用程序流程生成用户访问令牌

本质上,您将用户发送到 https://github.com/login/oauth/authorize?client_id=,他们所要做的就是单击一个大的绿色批准按钮,然后我们可以将其配置为重定向到服务器端点(Github 为您指定的任何回调端点预填充查询参数)。使用该

code
查询参数,您可以使用正文向 https://github.com/login/oauth/access_token 发出发布请求

{
    "client_id": "fohgljbgkjsfbglfghdif",
    "client_secret": "sd,gjhralighrlgugfiljdgkdfgdifydfighidsds",
    "code": "dgusifughodshgodlsbvjdbv"
}

我已手动验证其有效并返回

access_token=ghu_sfiuhdsuighfdisbgsdgdhsdshjsdfshdjf&expires_in=28800&refresh_token=ghr_fhiugigudsgisugdigusdig&refresh_token_expires_in=15724800&scope=&token_type=bearer

回想一下,我最初的目标是通过此端点添加 ssh 密钥https://docs.github.com/en/rest/users/keys?apiVersion=2022-11-28#create-a-public-ssh-key -对于经过身份验证的用户

使用上述令牌,我收到以下响应:

/tmp % curl -L -X POST -H "Accept: application/vnd.github+json" -H "Authorization: Bearer ghu_sfiuhdsuighfdisbgsdgdhsdshjsdfshdjf" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/user/keys -d '{"title":"ssh-rsa AAAAB3NzaC1yc2EAAA","key":"2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvv1234"}'
{
  "message": "Resource not accessible by integration",
  "documentation_url": "https://docs.github.com/rest/users/keys#create-a-public-ssh-key-for-the-authenticated-user"
}

当我用谷歌搜索此错误时,问题似乎与令牌权限有关。我控制着 Github 应用程序,所以这看起来很容易补救,但密钥几乎肯定有

write:public_key
范围,这是文档唯一需要的。那我错过了什么?

这个问题并不能解决我的问题,因为它是在 Github 更改一般令牌权限和相关 api 之前创建和回答的 如何通过 GitHub 的 v3 API 添加 ssh-keys?

作为参考,这是 github 应用程序确认屏幕,因此您可以看到从此流程生成的令牌应该允许我使用 ssh 密钥端点

github access-token github-api
1个回答
0
投票

您可以尝试在通话中添加以下标头吗?

'x-accepted-github-permissions': 'actions=read',
© www.soinside.com 2019 - 2024. All rights reserved.