# 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 |