iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
Modern Web

不只是登入畫面!一起打造現代化登入系統系列 第 14

屋內安全[ 3 / 6 ]:Firebase Token 機制:ID Token、Refresh、自動更新與權限驗證

  • 分享至 

  • xImage
  •  

我們在專案中已經導入 Firebase Auth,但很多人做到一半會突然冒出幾個問號:

  • Firebase 有 JWT 嗎?
  • Access Token、ID Token 是一樣的東西嗎?
  • 為什麼我沒寫後端也能驗證身份?
  • Refresh Token 到底藏在哪裡?
  • 如果 Token 過期,怎麼「續命」?

這篇會把 Firebase 的 Token 流程一次講清楚,不寫程式也能懂,為接下來登入態管理、權限驗證、Session 機制打個穩固地基。


Firebase 其實就是「幫你自動管理 JWT」

就算你沒感覺,Firebase Auth 背後就是在幫你發 JWT(JSON Web Token)。
只不過它不像傳統後端要你自己簽發,而是:

✔ Google 幫你簽
✔ SDK 幫你拿
✔ Token 自動儲存
✔ 過期自動刷新(Refresh Token)
✔ 你只需要 .getIdToken() 就能取用

也因為這樣,很多人用得很習慣,卻根本不知道 Token 在哪、怎麼生、何時過期。


Firebase 總共發兩種 Token(但你看到的只有一個)

  1. ID Token(JWT 格式,可解碼)
    • 有效期大約 1 小時
    • 用來驗證使用者身份
    • 前端可用 .getIdToken() 取得
    • 後端也能驗證它(如果有)

範例(解碼後):

{
  "user_id": "abc123",
  "email": "test@gmail.com",
  "exp": 1737620100,
  "auth_time": 1737616500
}
  1. Refresh Token(Firebase 自動保存)
    • 有效期較長(通常 30 天)
    • 不能解碼(不是 JWT 字串格式)
    • SDK 會自動保存並刷新 ID Token
    • 不會主動回傳給你

📌 放在哪?
在 Web 專案中,Refresh Token 會被 Firebase 存在 IndexedDB 或 localStorage 裡,你平常根本不會操作到。


Token 過期怎麼辦?

當 ID Token 過期,Firebase 會這樣處理:

  1. 你呼叫 .getIdToken()
  2. SDK 發現過期
  3. 自動帶著 Refresh Token 去 Firebase 伺服器換一個新 ID Token
  4. 你拿到的是新的,不需要額外操作
    也就是說 —— 你不需要自己寫 refresh API

Firebase 跟傳統 JWT 的差別

項目 傳統後端實作(Node/Express) Firebase Auth
Token 誰簽 你自己(jsonwebtoken/jose) Google
Access Token 有效時間 15~60 分鐘不等 約 1 小時
Refresh Token 儲存 Cookie / DB / Redis SDK 自動管理
登入流程 自己寫 Controller Firebase 提供 API
驗證 手動 Middleware Firebase SDK / Admin SDK
換 Token 自己寫 refresh route 自動 refresh

Firebase 幫你省下 50% 後端開發時間,也避免不少安全誤踩雷區。


上一篇
屋內安全[ 2 / 6 ]: JWT 基礎篇:什麼是 JSON Web Token?
下一篇
屋內安全[ 4 / 6 ]:JWT 驗證與最小後端實作
系列文
不只是登入畫面!一起打造現代化登入系統18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言