Logo

新人日誌

首頁關於我部落格

新人日誌

Logo

網站會不定期發佈技術筆記、職場心得相關的內容,歡迎關注本站!

網站
首頁關於我部落格
部落格
分類系列文

© 新人日誌. All rights reserved. 2020-present.

本文為「Web 驗證入門」系列第 2 篇

Authentication 與 Authorization 差異解析:搞懂 401 和 403 錯誤

最後更新:2025年12月11日基礎概念

這兩個英文長得很像,但意思完全不同!

  • Authentication(驗證)
  • Authorization(授權)

很多新手會搞混,連 HTTP 狀態碼 401 和 403 也常常搞不清楚什麼時候該用哪個。這篇一次講清楚。

Authentication(驗證)

核心問題:你是誰?

就是確認「你是不是你說的那個人」。

生活中的例子

  • 刷學生證進校門 → 確認你是這間學校的學生
  • 輸入帳號密碼登入 → 確認你是這個帳號的主人
  • 刷臉解鎖手機 → 確認你是手機的主人

結果

只有兩種:通過 或 不通過。

Authorization(授權)

核心問題:你能做什麼?

通過身份驗證之後,再決定「你有多少權限」。

生活中的例子

  • 你刷學生證進了校門,但你不能進教師辦公室(因為你不是老師)
  • 你登入了 Netflix,但你只能看基本方案的內容(因為你沒買進階方案)
  • 你登入了公司系統,但你不能看財務報表(因為你不是財務部門)

結果

是等級制的:你可以做到哪些事、不能做哪些事。

兩者的關係

通常是先 Authentication,再 Authorization:

  1. 先確認你是誰(Authentication)
  2. 再決定你能幹嘛(Authorization)

實際例子:刪除文章

有人想刪除網站上的一篇文章

第一關 – Authentication:這個人登入了嗎?

  • 沒登入 → 請先登入
  • 有登入 → 進入第二關

第二關 – Authorization:這個人有權限刪除嗎?

  • 是文章作者 → 可以刪
  • 是管理員 → 可以刪
  • 都不是 → 不好意思,你沒這個權限

HTTP 狀態碼:401 vs 403

講完觀念,來看實際開發中會遇到的 HTTP 狀態碼。

400 開頭的是「客戶端錯誤」,其中有兩個跟驗證 / 授權有關:

狀態碼名稱意思
401Unauthorized驗證失敗(你是誰?我不認識你)
403Forbidden授權失敗(我知道你是誰,但你沒權限)
名稱Unauthorized
意思驗證失敗(你是誰?我不認識你)
名稱Forbidden
意思授權失敗(我知道你是誰,但你沒權限)

401 Unauthorized:驗證沒過

什麼時候回傳 401?

當使用者沒有提供正確的身份證明時。

例如:

  • 沒有登入,卻想存取需要登入的頁面
  • 帶了 Token,但 Token 過期或是錯的
  • 帳號密碼打錯

用學校的例子來說:你沒帶學生證,門口警衛不讓你進去。

使用者:我要進去!
伺服器:你的學生證呢?
使用者:我沒帶 / 我帶的是假的
伺服器:回傳 401 Unauthorized

403 Forbidden:授權沒過

什麼時候回傳 403?

當使用者有登入、身份也對,但權限不夠時。

例如:

  • 一般會員想進管理員後台
  • 想存取別人的私人資料
  • 想執行超出自己權限的操作

用學校的例子來說:你有學生證,也刷卡進校門了,但你想進教師辦公室,門禁系統不讓你進。

使用者:我要進教師辦公室!
伺服器:我知道你是學生,但這裡只有老師能進
使用者:可是我有學生證...
伺服器:回傳 403 Forbidden

401 vs 403 快速判斷

情境回傳
沒登入就想看會員專區401
Token 過期401
帳號密碼錯誤401
登入了,但想進管理員後台(你不是管理員)403
登入了,但想看別人的私人資料403
登入了,但想刪除不是自己的文章403
回傳401
回傳401
回傳401
回傳403
回傳403
回傳403

一句話記法

  • 401:你誰啊?我不認識你(身份有問題)
  • 403:我知道你是誰,但你不能做這件事(權限不夠)

總結

AuthenticationAuthorization
問題你是誰?你能幹嘛?
結果對 or 錯等級高低
失敗時的狀態碼401 Unauthorized403 Forbidden
白話文驗證身份驗證權限
Authentication你是誰?
Authorization你能幹嘛?
Authentication對 or 錯
Authorization等級高低
Authentication401 Unauthorized
Authorization403 Forbidden
Authentication驗證身份
Authorization驗證權限

記住這個順序:

下次看到 401 或 403,就知道是哪一關沒過了!

上一篇Web Authentication 入門:Client to Server 與 Server to Server 驗證解析
下一篇搞懂雜湊(Hash):做權限驗證前一定要知道的事
目前還沒有留言,成為第一個留言的人吧!

發表留言

留言將在審核後顯示。

基礎概念

目錄

  • Authentication(驗證)
  • 核心問題:你是誰?
  • 生活中的例子
  • 結果
  • Authorization(授權)
  • 核心問題:你能做什麼?
  • 生活中的例子
  • 結果
  • 兩者的關係
  • 實際例子:刪除文章
  • HTTP 狀態碼:401 vs 403
  • 401 Unauthorized:驗證沒過
  • 403 Forbidden:授權沒過
  • 401 vs 403 快速判斷
  • 一句話記法
  • 總結