喂!我是 Wei

Front-End Engineer

Be a Problem Solver.

⌘K

導覽

所有文章緣起互動小功能

文章分類

目錄
JWT 是什麼?JWT 的重點不是加密,而是簽章JWT 放 localStorage 還是 Cookie?OAuth 是什麼?OAuth Authorization Code FlowOAuth 和 JWT 的差別面試常見追問JWT 過期怎麼辦?JWT 可以登出嗎?scope 是什麼?我的面試回答模板

相關文章

前端 CI/CD 與正式環境除錯:從 Pull Request 到事故排查

2026年6月24日

即時資料怎麼選?Polling、SSE、WebSocket 比較

2026年6月23日

前端系統設計:如何拆元件、資料流與大型專案架構?

2026年6月22日

最新文章
全部 →
前端 CI/CD 與正式環境除錯:從 Pull Request 到事故排查
2026-06-24
即時資料怎麼選?Polling、SSE、WebSocket 比較
2026-06-23
前端系統設計:如何拆元件、資料流與大型專案架構?
2026-06-22
無障礙不是加 ARIA:語意化 HTML、鍵盤操作與焦點管理
2026-06-21
CSS 與 RWD 面試整理:Flexbox、Grid、定位與層疊脈絡
2026-06-19
← 返回文章列表

前端工程師面試題:JWT 是什麼?OAuth 流程怎麼跑?

2026年5月31日·約 7 分鐘閱讀·
前端面試系列認證授權JWT OAuth

前端面試問到登入機制時,很常會連續追問兩題:

  1. JWT 是什麼?
  2. OAuth 流程怎麼跑?

這兩題很容易被混在一起,但其實它們解決的是不同層級的問題。

JWT 是一種 token 格式,常用來表示「這個請求是誰發出的」。
OAuth 是一套授權流程,用來讓使用者同意某個應用程式取得特定資源。

JWT 與 OAuth 在登入流程中的位置


JWT 是什麼?

JWT 全名是 JSON Web Token,是一種把資訊包成字串的 token 格式。常見用途是登入後由後端簽發 token,前端之後呼叫 API 時把 token 帶上,後端就能驗證使用者身分。

一個 JWT 通常長這樣:

xxxxx.yyyyy.zzzzz

它由三段組成:

區段用途
Header描述 token 類型與簽章演算法,例如 HS256、RS256
Payload放 claims,例如 userId、role、exp
Signature用密鑰簽出來的結果,用來確認 token 沒被竄改

面試可以這樣回答:

JWT 是一種自包含的 token 格式,由 header、payload、signature 三段組成。後端簽發後,前端可以在呼叫 API 時把它放在 Authorization: Bearer <token>。後端驗證 signature 與過期時間後,就能判斷使用者身分。


JWT 的重點不是加密,而是簽章

這是面試很常追的點。

JWT 的 payload 預設只是 Base64URL 編碼,不是加密。任何人拿到 token 都可以 decode 看到 payload 內容。

所以 payload 裡不應該放:

  • 密碼
  • 信用卡
  • 身分證字號
  • 任何不希望被使用者看到的敏感資料

JWT 的 signature 解決的是「有沒有被改過」,不是「內容有沒有被藏起來」。

// 不適合放敏感資料
{
  "sub": "user_123",
  "role": "admin",
  "exp": 1781174400
}

面試補一句會很加分:

JWT 預設不是加密,payload 只能放可以被使用者看到的資訊。真正的安全性來自 HTTPS、合理的過期時間、簽章驗證,以及 refresh token / revoke 機制的設計。


JWT 放 localStorage 還是 Cookie?

這題沒有唯一答案,重點是你能不能講出風險。

放置位置優點風險
localStorage實作簡單,前端容易控制 header容易受到 XSS 影響
HttpOnly CookieJS 讀不到,降低 token 被 XSS 偷走的機率需要處理 CSRF、SameSite、CORS

如果是一般 Web App,我會傾向:

  • access token 短效
  • refresh token 放 HttpOnly、Secure、SameSite Cookie
  • 前端不要把長效 token 放在 localStorage

但面試時不要只背答案,最好補上場景:

如果系統主要風險是 XSS,HttpOnly Cookie 會比 localStorage 更安全;但 Cookie 會牽涉 CSRF 與跨域設定,所以要搭配 SameSite、CSRF token 或明確的 CORS 策略。


OAuth 是什麼?

OAuth 2.0 是一套授權標準。

它解決的問題不是「使用者密碼怎麼驗」,而是:

使用者能不能授權某個第三方應用,在不交出密碼的情況下,取得某些資源?

最常見例子是「使用 Google 登入」。

你的網站不需要知道使用者的 Google 密碼,而是把使用者導到 Google。使用者同意後,Google 回傳授權結果,你的系統再拿這個結果換 token。


OAuth Authorization Code Flow

前端面試最常問的是 Authorization Code Flow。流程可以拆成六步:

  1. 使用者點擊「使用 Google 登入」
  2. 前端導向 OAuth Provider,例如 Google
  3. 使用者登入並同意授權範圍
  4. Provider redirect 回你的 callback URL,並帶上 code
  5. 後端拿 code 去 Provider 換 access token
  6. 後端建立自己的 session 或簽發自己的 JWT 給前端

簡化後的流程:

User
  → Frontend
  → Google OAuth Login
  → callback?code=abc
  → Backend 用 code 換 token
  → 建立站內登入狀態

面試回答可以這樣講:

OAuth 的 Authorization Code Flow 會先把使用者導到授權伺服器,使用者同意後,授權伺服器 redirect 回 callback URL 並附上 code。應用程式後端再用這個 code 去換 access token。前端不應該直接保管 client secret,正式環境也通常會搭配 PKCE 來降低 code 被攔截的風險。


OAuth 和 JWT 的差別

這題最適合用一句話收斂:

OAuth 是授權流程,JWT 是 token 格式。OAuth 流程中可能拿到 JWT,但 OAuth 本身不等於 JWT。

再補一個表格:

比較JWTOAuth
本質Token 格式授權框架
解決問題如何表示身分與 claims如何讓使用者授權第三方
常見位置API 請求的 Bearer tokenGoogle / GitHub / Facebook 登入流程
面試關鍵三段結構、簽章、過期、安全儲存Authorization Code Flow、redirect、scope、PKCE

面試常見追問

JWT 過期怎麼辦?

通常會設計 access token + refresh token:

  • access token 短效,例如 15 分鐘
  • refresh token 長效,用來換新的 access token
  • refresh token 需要能被 revoke

如果 access token 過期,前端可以呼叫 refresh API。成功就重送原本請求,失敗就導回登入頁。

JWT 可以登出嗎?

JWT 本身是 stateless,簽出去後只要沒過期,後端只靠 signature 無法知道使用者是否已登出。

常見解法:

  • access token 設短效
  • refresh token 存 DB,登出時刪除或標記失效
  • 對高風險系統加 blacklist / token version

scope 是什麼?

scope 是授權範圍,例如:

read:user
repo:read
calendar.events.readonly

它讓使用者知道這個 app 要拿哪些權限,也讓 Provider 可以限制 token 能做的事情。


我的面試回答模板

如果面試官問「JWT 是什麼?OAuth 流程是什麼?」我會這樣回答:

JWT 是一種 token 格式,通常由 header、payload、signature 組成,用來讓後端驗證請求者身分。payload 預設只是編碼不是加密,所以不能放敏感資料。OAuth 則是一套授權流程,例如 Google Login,使用者會被導到授權伺服器,同意後回到 callback,後端再用 authorization code 換 access token。簡單說,OAuth 是流程,JWT 是 token 格式,兩者常一起使用但不是同一件事。

這樣回答的好處是:先把兩者切開,再講流程,最後補安全注意事項。面試官通常就會知道你不是只背名詞。

分享:XLinkedIn
← 上一篇前端工程師面試題:後端 API 回應很慢,你會怎麼協助排查?
下一篇 →前端工程師面試題:Scrum 是什麼?工程師在 Sprint 裡做什麼?