OAuth 授权到底是什么
当你在第三方应用上点击“Authorize”时,GitHub 会记录一项授权:该应用现在可以在你批准的权限范围内代表你操作。这项授权不是你的浏览器会话,不是 SSH 密钥,也不是带有自身安装设置的已安装 GitHub App。这些内容各自在不同的地方撤销或移除,所以第一步是确认你正在查看的是哪一种访问权限。
| 你看到的内容 | 它是什么 | 在哪里管理 |
|---|---|---|
| 列出的第三方应用及其你批准的权限范围 | OAuth 授权 | Settings → Applications → Authorized OAuth Apps |
| 你为通过 SSH 使用 Git 添加的密钥对 | SSH 密钥 | Settings → SSH and GPG keys |
| 你在此浏览器中已登录 | 登录会话 | 退出登录,或会话页面 |
| 安装在仓库或组织上的应用 | GitHub App 安装 | 该应用或组织的安装设置 |
如果你查看的条目不是 OAuth 授权,从 OAuth 列表中撤销它并不会解决该问题。
为什么撤销前要先审查
旧的授权可能仍在执行你依赖的操作,例如部署工具、编辑器插件或 CI 集成。撤销它会切断该应用通过此授权的访问,这正是目的,但也可能破坏仍依赖它的工作流。行动前,请审查应用名称、列出的权限以及你上次使用它的时间。
GitHub 建议审查已授权的应用,包括有权访问私有仓库的应用。来源
如果你不认识该应用,或者它拥有的访问权限比其执行的任务更广泛,那就是需要撤销的情况。如果你认识它且仍在使用,请在决定前考虑当前权限范围是否仍然合适。
撤销前后检查清单
将此作为简短记录,以便你了解发生了什么变化,并在需要时撤销错误。
撤销前
- 记下应用名称及其显示的权限,以便日后识别同一入口。
- 检查你当前使用的任何内容是否依赖该应用:构建、部署、编辑器登录、计划任务。
- 确认你查看的是 Authorized OAuth Apps,而不是 SSH 密钥、会话或已安装的应用。
- 决定你是要撤销某个特定授权还是全部授权。
撤销后
- 重新加载 Authorized OAuth Apps 页面,确认该条目已消失。
- 运行一次使用该应用的工作流,并注意它现在是否要求你重新授权。该提示是授权已被移除的预期迹象。
- 如果工作流中断且你仍需要它,请有意重新授权并审查其请求的权限范围。
- 在你确定没有其他内容依赖已撤销的访问权限之前,请保持账号恢复方式有效。
如何撤销授权
打开账号 Settings,进入 Integrations 下的 Applications,然后进入 Authorized OAuth Apps 审查访问权限。来源
从列表中,打开你要移除的特定应用的菜单。
无法识别或过时的授权可以从应用菜单中撤销;该页面还提供 Revoke all。来源
当你只想移除一个应用时,撤销单个条目。Revoke all 选项适用于你已审查列表并想清除所有授权的情况;它将影响该页面上的每个应用,而不仅仅是你正在查看的那个。
需要牢记的失效边界
- 撤销不是删除。 移除授权会阻止通过该授权的未来访问。它不会移除应用已经存储在 GitHub 之外或复制到别处的数据,也不保证数据被擦除。
- 撤销不是退出登录。 你在 GitHub 上的浏览器会话是独立的;撤销应用不会让你退出登录,退出登录也不会撤销应用授权。
- SSH 密钥不是 OAuth 应用。 如果你担心的是密钥,移除它要在 SSH and GPG keys 设置中进行,而不是在 Authorized OAuth Apps 中。
- 已安装的 GitHub App 不是同一条目。 安装级别的访问权限在应用安装的地方管理,因此如果应用未出现在 OAuth 列表中,请在那里检查。
- 公开用户名匹配不是证据。 如果你在检查某个用户名是否出现在其他地方,公开个人资料上的匹配只是线索,不是所有权的证据。TraceSeek 可以在 3,000+ 个平台上查找已知的公开用户名,但它无法为你审查或撤销 GitHub 设置。
何时将授权视为可疑
你不需要戏剧性的故事才采取行动。实际信号是:你不认识该应用,权限比其执行的任务更广泛,或者你记不得授权过它。在这些情况下,撤销特定条目是合理的步骤,然后检查你依赖的任何内容是否停止工作。如果工作流确实中断,只有在确认该应用是你预期的应用且权限范围符合其需求后,才重新授权。