安全
授權(authorization)· authz
/ aw-ther-i-ZAY-shun /
授權(authorization)決定的是:在系統已經知道你是誰之後,你「被允許做什麼」。你登入了——沒問題——但你能刪掉這個檔案嗎?能看別人的薪水嗎?能打開管理後台嗎?授權就是為每一個這種問題把關的那道關卡。
它總是發生在身分驗證(authentication)之後。系統先確認你的身分(authn),再檢查你的權限(authz)。知道你是誰,並不能說明你能碰什麼——一個登入的訪客和一個登入的管理員同樣都「通過了驗證」,但「被授予的權限」天差地別。
當你撞上一堵過不去的牆,那通常就是授權失敗:伺服器很清楚你是誰,只是不讓你做這件事。在網路上,它常常表現為一個 403 Forbidden(禁止存取)。
if (user.role !== "admin") {
return res.status(403).send("Forbidden");
}
// authenticated, but not authorized for this授權檢查:我們知道你是誰,只是你沒權限進這裡。
401 Unauthorized 其實是說「我們不知道你是誰」(屬於身分驗證問題)——真正代表授權說「不行」的是 403 Forbidden。這是網路上一個一直沒改過來的命名錯位。
又稱
另見