跳到主要內容

SCIM vs OIDC 企業 SSO 架構全解析:帳號佈建與身分認證的分工協作之道

企業導入 SSO 時,常將 SCIMOIDC 混為一談。兩者職責截然不同:SCIM 管「帳號存不存在」,OIDC 管「登入的人是不是本人」,分工明確才能打造健全的身分管理架構。

SCIM:後台帳號生命週期的守門人

SCIM(System for Cross-domain Identity Management) 是一套標準化的 REST API 協定,負責在 IdP(身分提供者,如 Okta、Azure AD)與 SP(服務提供者)之間自動同步使用者資料。當 HR 系統新增員工,SCIM 即觸發 POST /Users 在目標系統建立帳號;員工離職時,則呼叫 DELETE /Users/{id} 即時停用存取權限。整個流程在後台靜默執行,無需使用者介入,確保帳號狀態與組織資料保持一致,徹底消除「幽靈帳號」風險。

OIDC:前台即時身分驗證的核心引擎

OIDC(OpenID Connect) 建構於 OAuth 2.0 之上,專責處理使用者的即時登入認證流程。使用者點擊「以 Google 登入」後,OIDC 啟動 Authorization Code Flow:IdP 驗證憑證後,回傳含使用者身分聲明的 ID Token(JWT 格式),SP 驗證簽章即可確認使用者身分。OIDC 解決的核心問題是「這個人現在登入,確實是他本人嗎?」,與帳號是否預先存在無關。兩者結合時,SCIM 先佈建帳號,OIDC 再驗證身分,缺一不可。

💡 核心重點整理

  • 職責分離:SCIM 管帳號存在與否,OIDC 管身分真實與否。
  • 時序關係:SCIM 佈建在前(非同步),OIDC 認證在後(即時)。
  • 協定層次:SCIM 基於 REST/JSON,OIDC 基於 OAuth 2.0 + JWT。
  • 互補而非替代:少了 SCIM,帳號需手動管理;少了 OIDC,無法實現 SSO 登入。

在企業 SSO 架構中,SCIM 與 OIDC 是相輔相成的雙引擎。SCIM 確保「帳號存在」,OIDC 確保「人是本人」,兩者共同構築零信任身分管理的基石,缺少任一環節都將留下安全漏洞。

📚 參考文獻

  1. OpenID Connect Core 1.0 — OpenID Foundation 官方規範
  2. RFC 7644: SCIM Protocol Specification — IETF 官方文件
  3. SCIM 概念指南 — Okta Developer Documentation

⚠️ 本文內容基於撰寫時的最新資訊,實際應用時請參考官方文件的最新版本。

留言