# 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 |
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.