技能 auth-implementation-patterns
🔐

auth-implementation-patterns

安全

實作安全的認證系統

也可從以下取得: wshobson

學習經過實戰驗證的認證與授權模式,在您的應用程式中建立安全的存取控制,無需從頭重新實作。

支援: Claude Codex Code(CC)
🥉 75 青銅
1

下載技能 ZIP

2

在 Claude 中上傳

前往 設定 → 功能 → 技能 → 上傳技能

3

開啟並開始使用

測試它

正在使用「auth-implementation-patterns」。 如何在 Express 中實作 JWT 認證?

預期結果:

完整的 JWT 實作包含:1) 使用 jwt.sign() 搭配環境變數中的機密生成權杖,2) 建立驗證 Bearer 權杖的 authenticate 中介軟體,3) 使用短效期存取權杖 (15 分鐘) 搭配較長效期的更新權杖 (7 天),4) 將更新權杖雜湊後儲存於資料庫。完整程式碼請參閱 implementation-playbook.md Pattern 1。

正在使用「auth-implementation-patterns」。 Session 認證與權杖認證有何差異?

預期結果:

Session 認證:伺服器儲存狀態,Session ID 存放於 cookie,簡單但需要 sticky sessions。權杖認證 (JWT):無狀態、自包含聲明、可水平擴展,但難以撤銷個別權杖。傳統應用程式選擇 Session,API 與微服務選擇 JWT。

正在使用「auth-implementation-patterns」。 如何實作基於角色的授權?

預期結果:

在 enum 中定義角色 (USER、MODERATOR、ADMIN),建立角色階層映射,建立 requireRole() 中介軟體檢查使用者角色是否符合允許角色,將中介軟體套用至受保護路由。範例:app.delete('/users/:id', authenticate, requireRole('ADMIN'), handler)

安全審計

安全
v1 • 2/24/2026

Educational documentation skill containing authentication and authorization code patterns. All 67 static findings are false positives: backticks are markdown code fences, environment variable access demonstrates proper secret handling, and weak crypto mentions are in cautionary context. No actual security risks present.

2
已掃描檔案
661
分析行數
0
發現項
1
審計總數
未發現安全問題
審計者: claude

品質評分

38
架構
100
可維護性
87
內容
50
社群
100
安全
100
規範符合性

你能建構什麼

從零開始建立 JWT 認證

實作完整的權杖認證,包含存取權杖、更新權杖及適當的機密管理

新增 OAuth2 社交登入

將 Google 和 GitHub OAuth2 認證整合到現有應用程式中

設計授權模型

為應用程式資源建立 RBAC 或基於權限的存取控制系統

試試這些提示

基本 JWT 設定
展示如何在 Node.js 與 Express 中實作 JWT 認證,包含權杖生成與驗證中介軟體
更新權杖流程
建立更新權杖流程,安全地將更新權杖儲存於資料庫並簽發新的存取權杖
OAuth2 整合
使用 Passport.js 實作 Google OAuth2 登入,認證後生成 JWT 權杖
RBAC 授權
設計包含 admin、moderator 和 user 角色的基於角色存取控制系統,包含權限檢查中介軟體

最佳實務

  • 一律使用環境變數儲存機密 (JWT_SECRET、SESSION_SECRET),切勿將憑證硬編碼
  • 使用短效期存取權杖 (15-30 分鐘) 搭配獨立的更新權杖以提升安全性
  • 將更新權杖雜湊後儲存於資料庫,並實作使用時輪轉機制

避免

  • 將 JWT 儲存於 localStorage 會使權杖暴露於 XSS 攻擊風險 - 請改用 httpOnly cookie
  • 未驗證權杖過期時間將導致過期權杖可被無限使用
  • 僅在客戶端進行授權檢查可被繞過 - 務必在伺服器端驗證

常見問題

何時應該使用 Session 認證與權杖認證?
在需要簡單登出與 CSRF 保護的傳統伺服器端算繪應用程式中使用 Session。在需要無狀態認證與跨網域請求的 SPA、行動應用程式與微服務中使用權杖 (JWT)。
如何安全地儲存 JWT 機密?
切勿將機密硬編碼於原始碼中。使用環境變數 (process.env.JWT_SECRET) 並於執行時從 .env 檔案載入。確保 .env 已加入 .gitignore,且在生產環境中從安全來源注入機密。
認證與授權有何差異?
認證 (AuthN) 驗證使用者身分 (使用憑證登入)。授權 (AuthZ) 決定使用者可執行的操作 (權限、角色)。兩者在存取控制中皆不可或缺,但用途不同。
如何安全地實作更新權杖?
生成隨機 UUID 作為更新權杖,將雜湊版本儲存於資料庫,設定過期時間 (7-30 天),實作輪轉機制 (每次使用時簽發新更新權杖),並允許因登出或安全事件撤銷。
JWT 權杖可以被撤銷嗎?
JWT 本質上為無狀態。撤銷方法:在 Redis/資料庫中使用權杖封鎖清單、實作短效期使權杖自然過期,或使用更新權杖輪轉使舊權杖配對失效。
處理密碼儲存的最佳方式為何?
一律使用 bcrypt 或 argon2 搭配高工作係數 (bcrypt cost 10-12) 雜湊密碼。切勿儲存純文字密碼。使用 bcrypt 自動提供的 salt。使用 bcrypt.compare() 進行驗證。