為何臨時關閉仍可能留下存取權
當你需要快速暫停某項整合時,最直接的做法是暫停或解除安裝。這處理了安裝層面,卻不會自動處理授權層面,因為那是另一項授權,由不同擁有者管理。
暫停已安裝的 GitHub App 會暫時封鎖對該安裝帳戶所擁有資源的存取。來源
這項區別很重要,因為 GitHub App 可同時持有兩種存取權:對帳戶資源的安裝存取權,以及代表個人行事的用戶授權。暫停其一不會暫停另一項。
暫停不會移除應用程式代表用戶行事的獨立授權。來源
安裝存取權與用戶授權之別
使用下表判斷你實際需要更改哪個層面。
| 你想停止的事項 | 應檢查的層面 | 暫停的作用 | 暫停不會做的事 |
|---|---|---|---|
| 應用程式存取安裝帳戶所擁有的資源 | 該帳戶上的安裝 | 暫時封鎖該安裝的存取 | 移除用戶授權 |
| 應用程式代表個人行事 | 該用戶的「已授權的 GitHub App」 | 本身不會有任何作用 | 停止用戶層級授權 |
| 同時停止上述兩項(針對單一帳戶) | 兩個層面 | 僅涵蓋安裝層面 | 保留另一項授權 |
GitHub App 並非可直接登出的活躍瀏覽器工作階段。暫停安裝是對資源的帳戶層級控制;取消授權則是對委派行為的用戶層級控制。兩者分開管理,也應分開核實。
臨時關閉的實用檢查清單
- 先釐清目標。 決定你是要暫停應用程式對帳戶資源的存取、停止它代表用戶行事,還是兩者皆要。答案決定你需處理哪個層面。
- 處理安裝。 在擁有你想保護資源的帳戶上暫停安裝。視此為臨時且可逆的操作。
- 另行檢查用戶層面。 若應用程式曾獲授權代表你行事,而你想停止該行為,請前往「已授權的 GitHub App」並在該處取消授權。不要假設暫停已涵蓋此事。
- 記錄你更改了什麼及在哪裡更改。 註明你暫停了哪個帳戶的安裝,以及移除了哪些用戶授權(如有)。這可避免日後清理時遺漏兩者之一。
- 審慎還原。 若暫停屬臨時性質,請先確認是否也應還原用戶授權,然後才重新啟用安裝。
解除安裝比暫停更徹底,但仍有限制
若臨時暫停不足夠而你想移除安裝,解除安裝是安裝層面更強力的操作。它本身仍不會觸及用戶授權。
解除安裝會移除該帳戶的安裝存取權;當擁有者想停止應用程式代表其行事時,在「已授權的 GitHub App」中取消授權是另一項獨立操作。來源
實際後果:解除安裝後,若擁有者也想應用程式停止代表其行事,請檢查「已授權的 GitHub App」。移除一項連接並不證明另一項已消失,而不再於某處顯示的應用程式仍可能持有另一項授權。
常見的失敗路徑
- 假設暫停等於全面撤銷。 它只封鎖安裝的資源存取。用戶授權會一直存在,直至你處理為止。
- 將取消授權當作解除安裝。 取消授權會停止應用程式代表你行事,但帳戶上的安裝仍可保留。請決定你的關閉操作實際需要哪一項。
- 清理一個帳戶卻遺忘另一個。 安裝屬於帳戶;授權屬於用戶。只列明一個層面的關閉計劃,通常會令另一層面原封不動。
- 過早重新啟用。 若你選擇暫停而非解除安裝,還原安裝可能會在你檢視用戶層面之前恢復資源存取。
宣告完成前核實兩個層面
只有當你打算更改的每個層面都已按其自身準則檢查完畢,關閉才算完成。先在擁有帳戶上確認安裝狀態,然後在「已授權的 GitHub App」中為相關用戶確認授權狀態。不要從其一推斷另一項,也不要將應用程式描述為已登出——它從來不是瀏覽器工作階段。
若你下一個任務是移除較舊的 OAuth 授權,並希望將其與登入工作階段分開處理,相關指南撤銷舊 GitHub OAuth 應用程式而不與登入工作階段混淆涵蓋了該項不同的清理步驟。