问题标签 [github-app]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
92 浏览

github - GitHub API 创建回购返回 403?

我正在制作一个 GitHub 应用程序,并且正在尝试根据此文档创建一个存储库

https://docs.github.com/en/free-pro-team@latest/rest/reference/repos#create-a-repository-for-the-authenticated-user

当我向该 URL 发出 GET 请求时,它可以工作并且我得到用户的存储库,但是发出这样的 post 请求:

返回这个

我的应用有权访问此权限: 我的应用有权访问此权限:

0 投票
1 回答
381 浏览

github - 如何安全地将 Github App Install ID 与与 GitHub App 集成的网站帐户关联?

我正在构建一个围绕我的 GitHub 应用程序集成的网站。

这个网站有自己的用户(来自 Google oAuth),他们可以通过安装我的 GitHub 应用程序将他们的帐户连接到他们的 GitHub 帐户。

在 GitHub 应用程序安装过程中有一些事情我无法理解:

用户在 GitHub 上安装我的应用程序后:

  • 他们的浏览器被重定向到一个 URL(“安装后设置 URL”),该 URL 中包含安装 ID。

  • GitHub 调用我的 webhook 来声明安装

安装 ID 是一个敏感信息,就好像我网站的恶意用户(攻击者)可以欺骗我的网站将他们的帐户与其他人(受害者)的 GitHub 安装 ID 相关联,我的网站将在 GitHub API 上运行受害者代表攻击者(这很糟糕!)。

现在,我的目标是将此安装 ID 安全地绑定到我网站的用户。所谓安全,我的意思是我的网站不可能授予攻击者对我的应用程序的受害者 GitHub 安装的权限。

使用“安装后设置 URL”中提供的 GitHub 安装 ID 将此安装绑定到我的网站帐户是不安全的,因为我无法验证此安装 ID“属于”我网站的用户,因为知道受害者的有效安装 ID 的攻击者可以伪造 URL。

不完善的缓解措施:

  • 断言安装 ID 未绑定到我网站的任何其他用户帐户

    • 不好,因为如果出于某种原因,合法用户从未使用“安装后设置 URL”将此 GitHub 安装 ID 绑定到他的帐户而被重定向到我的网站,那么它可能会被规避

    • 在任何情况下都不好,这很容易受到确认的“种族”(或时间?)攻击(如果攻击者设法在受害者之前确认有效的安装 ID)

  • 与在 webhook 上收到的 GitHub API 事件事件结合使用

    • webhook 是由 Github 后端触发的,因此无法识别登录的网站用户,这无助于我们将 github 安装 ID 绑定到正确的网站用户。

我是否遗漏了什么,或者这是 App 授权模型的缺陷?

0 投票
1 回答
265 浏览

jenkins - 在 GitHub 中,如何授予应用程序权限以提交到具有保护的分支?

我有一个应用程序,我想在 CI 构建期间增加版本。我正在尝试使用应用程序凭据将版本推回,但出现以下错误:

现在,当我使用自己的凭据执行此操作时,它可以工作,因为我是存储库中的管理员,但是尽管有通常的分支保护,我如何授予对应用程序的访问权限以推送到 master?

0 投票
2 回答
309 浏览

firebase - 使用来自 GithubAuthProvider 的访问令牌时,GitHub GraphQL API 返回被禁止

我正在使用带有附加范围的 GithubAuthProviderrepo来获取用户的访问令牌,该令牌稍后用于访问 GitHub GraphQL API(GitHub 应用程序将内容和元数据的权限设置为只读)。

问题是当我试图列出私人回购时。API 返回一个空数组,就好像我没有所需的权限一样。此外,当我尝试列出用户存储库的分支时,它会返回类型错误FORBIDDEN

询问:

回复:

我错过了什么?

0 投票
1 回答
90 浏览

git - 如何修复 GitHub 中的“Fetch to Code Inspector failed”?

从我的 github 帐户中卸载了 Code-Inspector(CI)代码分析应用程序,但每次刷新页面或单击某些选项卡时,它仍然会不断推送危险警报通知错误。我已经多次从 Github Marketplace 安装和卸载了这个应用程序,甚至从设置中撤销了它的授权,但一直收到这个警报错误通知 - “ Fetch to Code Inspector failed

通知错误图片

0 投票
1 回答
234 浏览

github - 如何正确设置 Github App 提交者以显示应用创建了提交?

使用 GitHub Api 时,您可以提供作者和提交者信息,例如何时PUT提交content文件。

我希望能够使用 GitHub 应用程序,committer以便人们了解提交是使用第三方工具完成的,并且作者信息保留为经过身份验证的用户。

目前我正在使用应用程序名称作为应用程序域namecommitter电子邮件和电子邮件。但这根本不会将提交绑定到应用程序(例如:我必须使用该电子邮件创建一个机器人帐户才能让它显示任何类型的个人资料等,但这不会真正与我的 Github 应用程序相关联)。

这样做的正确方法是什么?还是我不应该尝试将应用程序用作,committer而只是将经过身份验证的用户用作committer

0 投票
1 回答
261 浏览

git - 如何递归地克隆 Github App 的 repo

我正在开发一个 Github 应用程序,该应用程序需要能够在发生推送事件时克隆 Github 存储库。

我已经成功设置了包括服务器在内的所有内容,并且可以使用访问令牌克隆存储库,但是我在使用具有子模块的存储库时遇到了一些问题。

我发现如果子模块配置了 SSH ,则使用git clone --recurse-submodules https://x-access-token:<token>@github.com/owner/repo.git不起作用。repo.git有没有一种简单的方法可以使用访问令牌执行递归子模块获取?

我尝试了另一种方法,该方法涉及使用.pem我的 github 应用程序的 pivate 密钥文件作为 SSH 身份。这涉及到运行ssh-agent bash -c 'ssh-add /path/to/private-key.pem; git clone --recurse-submodules git@github.com:owner/repo.git',但最终出现了一个Permission denied (publickey)错误,这是有道理的,因为该.pem文件并不意味着可以访问存储库,只是为了验证 github 应用程序。

编写 Github 应用程序时执行递归子模块克隆/获取的正确方法是什么?

0 投票
0 回答
45 浏览

firebase - 如何在 Firebase 中使用 GitHub 应用程序“安装期间的身份验证”

我正在开发一个GitHub 应用程序(与 GitHub 上的旧 OAuth 应用程序不同)。

作为安装应用程序的一部分,可以选择对用户进行身份验证,这意味着用户将在 GitHub 上安装应用程序并对其进行访问授权,然后重定向到您的身份验证回调 URL(通常为https://example.firebaseapp.com/__/auth/handler)。

如果我选择此选项,则 Firebase 在重定向后会抱怨它缺少初始状态。如果我尝试将硬编码值添加到 GitHub 应用程序配置中的上述 URL(例如应用程序 ID 和密钥等),则不会显示任何错误,并且我的用户最终会被定向到我的前端。问题是他们仍然没有登录,并且在控制台中查看时没有在 firebase 中创建用户。

现在我已经退回到一个两阶段的过程,让用户在安装时重定向,然后让他们再次与 GitHub 链接。

这会导致用户体验明显变差,因为他们必须在两个站点之间来回跳动几次,而最好的情况下可能是单击一次。

有什么方法可以使上述流程发挥作用,允许用户从 GitHub 安装和授予 oauth 访问权限,然后像创建并登录一样被定向到我的网站?

0 投票
0 回答
47 浏览

github - 安装时选择 Github App Callback URL

我设置了一个带有两个回调 url 的 Github 应用程序:

回调

默认情况下,当我安装我的应用程序时,用户会被重定向到https://dev.com/a.

有没有办法,给定一个特定的网址,被重定向到https://dev.com/b

0 投票
0 回答
76 浏览

github-api - Github 应用程序不会重定向到 Github Enterprise 中的回调 url

我之前为 Github.com 构建了 Github 应用程序,这些应用程序运行良好。我正在尝试将其移植到私人托管的 Github Enterprise 上。当我使用完全相同的配置时,我注意到在授权 Github 应用程序使用 Github Enterprise 存储库时,即使指定了回调 url,它也不会将其重定向回回调 url。它只是重定向回您看到应用程序安装的 Github 应用程序页面。

我确实在我的应用程序 url 上收到了一个用于新 Github 应用程序安装的 Webhook,因此我可以使用它来识别安装,但它增加了我的工作流程的复杂性。

该文档没有解释有关 Github Enterprise 中行为的任何内容。我想知道是否有人对此有任何经验或想出了解决方法?

在这种情况下,我需要安装 ID 和通过安装授权的存储库列表。