# OAuth2 vs OpenID Connect vs SAML 整合認證比較 ## 1. 概要 | 技術名稱 | 全名 | 用途說明 | |----------------|---------------------------------------|--------------------------------------------| | OAuth2 | OAuth 2.0 Authorization Framework | 授權框架,用於第三方應用存取資源,不處理身份驗證 | | OpenID Connect | OpenID Connect | 建立於 OAuth2 之上,提供身份驗證功能 | | SAML | Security Assertion Markup Language | XML 為基礎的身份驗證與授權標準,常用於企業單點登入 | --- ## 2. 核心比較表 | 特性 | OAuth2 | OpenID Connect | SAML | |--------------------------|----------------------------|---------------------------|-----------------------------| | 規範標準 | IETF RFC 6749 | OpenID Foundation | OASIS 標準 | | 傳輸格式 | JSON | JSON | XML | | 使用場景 | API 授權 | 身份驗證與授權 | SSO(企業應用) | | 身份驗證 | ❌ 否 | ✅ 是 | ✅ 是 | | 授權功能 | ✅ 是 | ✅ 是 | ✅ 是 | | 常見用途 | 讓第三方應用存取資源 | Google、Microsoft 登入等 | 企業 SSO(如 Azure AD、ADFS)| | 資料格式 | Access Token | ID Token(JWT) | SAML Assertion(XML) | | 使用者資訊提供方式 | 無標準方式 | `/userinfo` endpoint | SAML Assertion | | 移動裝置支援 | ✅ 佳 | ✅ 非常佳 | ⚠️ 一般 | | 瀏覽器相容性 | ✅ 高 | ✅ 高 | ⚠️ 需多瀏覽器測試 | | 實作難易度 | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | --- ## 3. 適用情境建議 - **OAuth2** 適用於第三方應用需取得 API 訪問權限的場景,例如: - Facebook 分享內容 - Google Drive 存取檔案 - **OpenID Connect** 適用於 Web、行動裝置應用登入整合,現代化身份驗證標準,例如: - 使用 Google、Microsoft、LINE 登入 - 與 OAuth2 同時提供登入與資源存取功能 - **SAML** 適用於企業級應用、傳統系統整合的單點登入(SSO)場景,例如: - 員工入口網站 - ERP、HRM 等內部應用系統整合身份驗證 --- ## 4. 安全特性比較 | 安全特性 | OAuth2 | OpenID Connect | SAML | |----------------------|---------------|----------------|-----------| | Token 加密支援 | 可選 | 支援 JWT | XML 加簽 | | 支援 PKCE | ✅ 是 | ✅ 是 | ❌ 否 | | 單點登入(SSO) | ❌ 否 | ✅ 是 | ✅ 是 | | 多因素驗證支援 | ✅(取決於 IdP)| ✅ 是 | ✅ 是 | --- ## 5. 技術延伸說明 - **OAuth2** 僅處理授權流程,不包含身份驗證,但可與支援 MFA 的身份提供者(如 Azure AD)結合實作多因素驗證。 - **OpenID Connect** 是 OAuth2 的擴充,可取得 ID Token 驗證身份,也支援多因素驗證與單點登入。 - **SAML** 使用 XML 傳輸與數位簽章機制,安全性高但複雜,適合大型企業與舊有系統整合。 --- ## 6. 整合認證流程 - OAuth2 流程:Client → Authorization Server → Resource Server - OpenID Connect 流程:Client ← ID Token → User Info - SAML 流程:Client → Identity Provider → Service Provider --- ## 7. 結論建議 | 使用目的 | 推薦技術 | |------------------|----------------| | Web / App 登入 | OpenID Connect | | 第三方 API 存取 | OAuth2 | | 企業 SSO 整合 | SAML |