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(已授權的 OAuth 應用程式)以審查存取權。來源
在清單中,開啟你想移除的特定應用程式選單。
可從應用程式選單撤銷不明或過時的授權;該頁面亦提供 Revoke all(全部撤銷)。來源
如你只想移除一個應用程式,請撤銷該單一項目。Revoke all 選項適用於你已審查清單並想清除所有授權的情況;它會影響該頁面上的每個應用程式,而不只是你正在查看的那一個。
需要留意的失效邊界
- 撤銷不等於刪除。 移除授權會停止日後透過它存取。它不會移除應用程式已儲存或複製到 GitHub 以外的資料,也不保證資料已被抹除。
- 撤銷不等於登出。 你在 GitHub 的瀏覽器工作階段是獨立的;撤銷應用程式不會令你登出,登出也不會撤銷應用程式授權。
- SSH 金鑰不是 OAuth 應用程式。 如果你擔心的是金鑰,移除金鑰要在 SSH and GPG keys 設定中進行,而非在 Authorized OAuth Apps。
- 已安裝的 GitHub App 不是同一項目。 安裝層級的存取權在應用程式安裝的位置管理,因此若應用程式未出現在 OAuth 清單中,請到該處檢查。
- 公開用戶名稱吻合並非證明。 如果你正在查核某個帳號名稱是否出現在其他地方,公開個人檔案上的吻合只是線索,並非擁有權的證據。TraceSeek 可於 3,000+ 個平台搜尋已知的公開用戶名稱,但它無法代你審查或撤銷 GitHub 設定。
何時應將授權視為可疑
你不需要戲劇性的故事才行動。實際信號包括:你不認識該應用程式、權限比其執行任務所需更廣泛,或你記不起曾授權它。在這些情況下,撤銷該特定項目是合理步驟,之後再檢查你依賴的東西是否停止運作。如果工作流程確實中斷,請先確認該應用程式是你預期的,且權限範圍符合其需要,才重新授權。