認證與授權協定
Posted on Mar 30, 2025
OAuth 2.0 (Open Authorization 2.0)
- 核心概念:
- 授權框架:允許第三方應用有限訪問用戶資源
- 分離認證與授權:不需要分享用戶憑證
- 訪問令牌:使用令牌而非密碼訪問資源
- 授權類型(Grant Types):
- 授權碼模式(Authorization Code):最完整安全的流程,適合具有後端的網站
- 隱式授權(Implicit):簡化流程,適合純前端應用(已不推薦)
- 密碼模式(Resource Owner Password Credentials):直接使用用戶名密碼獲取令牌
- 客戶端憑證模式(Client Credentials):應用程序訪問自己的資源
- 角色定義:
- 資源擁有者(Resource Owner):用戶
- 客戶端(Client):第三方應用
- 授權服務器(Authorization Server):驗證用戶並發放令牌
- 資源服務器(Resource Server):託管受保護資源
- 令牌類型:
- 訪問令牌(Access Token):短期有效的資源訪問憑證
- 刷新令牌(Refresh Token):長期有效的令牌,用於獲取新訪問令牌
- ID 令牌(ID Token):包含用戶身份信息(OpenID Connect)
- 安全考量與最佳實踐:
- PKCE (Proof Key for Code Exchange):防止授權碼攔截
- 狀態參數(State Parameter):防止 CSRF 攻擊
- 令牌範圍(Scope):限制訪問權限
- HTTPS 強制:所有通信必須加密
- JWT (JSON Web Token):
- 結構:Header.Payload.Signature
- 自包含:包含所有必要資訊
- 無狀態:不需要伺服器端會話存儲
- OpenID Connect:
- 基於 OAuth 2.0:添加身份認證層
- ID Token:包含用戶身份資訊的 JWT
- UserInfo 端點:獲取額外用戶資訊
- Discovery:自動發現 OpenID Provider 配置