如何安全地将 Github 应用程序安装 ID 与集成了 GitHub 应用程序的网站帐户相关联?

How to securely associate a Github App Install ID with the account of a website integrating with the GitHub App?

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

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

GitHub 应用程序安装过程中有些东西我无法理解:

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

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

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

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

不完美的缓解措施:

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

找到答案:

我需要激活“安装期间请求用户授权 (OAuth)”。这样,GitHub 使用安全令牌进行回答,我可以使用它来验证安装,而不仅仅是安装 ID。

文档:https://docs.github.com/en/free-pro-team@latest/developers/apps/identifying-and-authorizing-users-for-github-apps#web-application-flow