如何選擇身分識別服務提供者:工程團隊的評估框架
一個從真實企業需求出發、實用的 IdP 評估框架。涵蓋協定深度、遷移、多租戶、AI 準備度,以及多數檢查表忽略的關鍵標準。
大多數身分識別服務提供者(IdP)的比較文章,都是由 IdP 自己撰寫的。很驚訝吧?他們列舉自家產品有的功能,跳過沒有的,然後稱這是「客觀指南」。
這篇不是那種文章。
我們檢閱了數十份企業真實的評估需求 —— 包含採購團隊遞交給廠商的實際試算表與 RFP 文件。模式很明顯:工程團隊往往低估最重要的標準,卻高估那些最無關緊要的。
結果?團隊根據 demo 選了 IdP,六個月後才發現遷移是一場噩夢,不得不重新開始評估。
這是我們希望有人在出發前給我們的評估框架。它是專為 B2B SaaS 公司的工程團隊打造 —— 真的在開發產品,而非只是幫員工採購內部 SSO。
快速解答:決定 IdP 成敗的關鍵
如果你只想快速瀏覽,重點在這裡:
- 協定深度比功能數量重要。 支援「OAuth2」本身沒意義。支援哪些授權類型?可以自 訂 token 聲明嗎?你能自己成為 OIDC 提供者嗎?
- 遷移能力是最被低估的標準。 如果不能在不強制重設密碼的情況下遷移現有用戶,這個 IdP 就是不可用的 —— 不管其他功能多棒都沒用。
- 多租戶必須是原生支援,而非補丁。 如果組織模型和單一租戶設定需要 workaround,你永遠都在跟系統打仗。
- AI 準備不是未來需求 —— 它是一年內的必要標準。 Token 交換、代理身分、委派範圍。如果 IdP 不支援這些,你明年還會再回來評估一次。
本指南以下會逐一詳細說明評估維度、具體問題與紅旗預警。
適用對象(以及不適用對象)
適用於你如果:
- 你是 50-300 人 B2B SaaS 公司的 CTO、工程副總或平台架構師
- 你有超過十萬用戶,承受不起高干擾的遷移
- 你正準備進軍要求 SSO、組織模型、稽核日誌的企業客戶
- 你需要撰寫技術評估報告,且想用不是廠商提供的框架
不適用於你如果:
- 你需要的是 workforce IAM(員工用的 SSO 工具) —— 這是另一種採購決策
- 你是還沒企業客戶、僅 500 用戶的新創 —— 選 SDK 最好用的即可
- 你需要的是身份驗證(KYC/KYB)—— 那完全屬於另一類產品
維度一:協定能力 —— 不只是「支援 OAuth2」
每個市面上的 IdP 都說支援 OAuth2 和 OIDC。這只是基本門檻。真正該問的是細節深度。
授權類型:支援哪些,為何重要
不可或缺:
- Authorization Code + PKCE —— 瀏覽器及手機 app 唯一建議使用流程。如果廠商還推薦 Implicit flow,請直接淘汰。PKCE 並非選項,是安全標準。
- Client Credentials —— 服務對服務溝通。後台服務之間需無人認證。
- Refresh Token —— 乍看簡單,細節差異大。能設定 rotating 嗎?過期時間?可以只撤銷單一 refresh token,而非整個會話嗎?
越來越重要:
- Token Exchange (RFC 8693) —— 支援 AI agent 身分驗證、假冒(impersonation)和委派流程。如果現在沒,有沒有在 roadmap 上?沒有就是大紅旗。
OIDC Provider 能力
大多數團隊沒想到要問這個問題:這個 IdP 能作為 OIDC Provider(不只是 consumer)嗎?
為何重要:隨著 SaaS 擴大,合作夥伴和客戶可能希望用你的身份系統登入他們的工具。你需要簽發 token、管理同意、第三方 app 註冊。如果 IdP 只能消費外部 IdP,無法作為 provider,未來要做外部 federation 就會卡住。
請問:
- IdP 是否有 OpenID Discovery endpoint 並可自訂品牌?
- 可區分第一方和第三方應用,並設置不同信任層級?
- 第一方 app 可跳過同意頁,第三方 app 必須同意頁嗎?
JWT 自訂
token 是你的 IdP 和服務之間的契約。如果不能自訂,每個下游服務就必須再查一次 API 才知道用戶能做什麼。
請問:
- 能自定義 access token / ID token 的 custom claim 嗎?
- 可以把用戶目前作用的組織(租戶) context 加到 token 嗎?
- 可否自定 scope,和你的權限模型對應?
- claim 是簽發時計算,還是可以透過 webhook / script 動態嵌入?
token 如果攜帶 { "org_id": "org_123", "role": "admin", "auth_level": 2 },API middleware 可以一行決定授權。如果只有 { "sub": "user_456" },就要回 IdP 或資料庫查。規模大時,這差的是每次請求 2ms 與 200ms 的差別。
維度二:認證流程 —— 凶手藏在細節
每個 IdP 都有 email/password 和社群登入。恭喜你,所有廠商都進入名單。
差異藏在 demo 不會帶到的流程細節。
註冊流程
- 註冊後自動登入:用戶註冊後,有無自動登入?還是又要手動再登入?強迫剛註冊的用戶再登入,轉換率耗損嚴重。你會驚訝多少 IdP 搞錯這件事。
- 自訂註冊欄位:註冊時可收集角色、公司名、用途嗎?還是事後還要獨立 onboarding 流程?
- 漸進式資料補齊(progressive profiling):可否分多次會話收集額外資料?不用一次填完所有?
登入流程
- login_hint 支援:從行銷 email 點進來時能 pre-fill email 嗎?看似小事,實際上會讓 email 行銷轉換率從 40% 拉高到 60%。
- 組織客製認證政策:A 組織強制 SAML,B 組織用 email/password,企業租戶才強制 MFA。每租戶認證規則若需寫程式,之後每進一個客戶工程團隊都會爆肝。
- 品牌自訂:登入介面可針對不同租戶自訂嗎?不限 logo / 色彩 —— 要能全 CSS 控制、自訂域名、郵件白牌。Hosted UI / BYO UI 應該是你選,不是被迫接受的缺陷。
多數檢查表遺漏的項目
- 靜默(silent)認證:token 過期時 app 可否自動無聲 refresh?refresh token 若也過期有備援方案嗎(例如 iframe sliding session)?
- 帳號連結:用 Google 註冊,之後用 email 登入,會不會產生兩個帳號?IdP 怎麼處理?搞砸會一堆幽靈帳號永久 存在。
- 免密碼選項:magic link、passkey、WebAuthn。不是人人立刻用,但六個月內企業客戶必問。
維度三:Session 與 token 管理 —— 見真章的地方
這裡是真正分出專業與外行的分界。Session 與 token 管理平常很無聊,爆炸時全體用戶都會被登出。
Cookie 安全性
不性感,但絕對關鍵。
- HttpOnly、Secure、SameSite:三者必須都正確設定。沒設 HttpOnly 的 IdP 不適合上線。
- 跨子網域支援:如你有
app.yourproduct.com跟api.yourproduct.com,Session 能橫跨子網域嗎?怎做到的? - 第三方 cookie 終止:Chrome 要淘汰了。IdP 沒第三方 cookie 怎處理跨域認證?如果答案是「還在開發中」,不夠格。
記住我(Remember me)、持久化 Session
用戶要能登入狀態保持數週,不是數分鐘。但 180 天持久會話與 30 分鐘 session 風險完全不同。
請問:
- 能否獨立設定 session 長度、token 有效期?
- 有「remember me」能加長 session 但 token 依然短效?
- 能否讓敏感操作重新認證但不終結整個 Session?
Refresh token 安全性
- Token rotation:每次使用時 IdP 會換新 token 嗎?(應該要)
- 加密儲存:refresh token at rest 有加密嗎?
- 撤銷微粒度:可否單獨撤銷某裝置會話?
- 有效期可配置:每 app 可否設不同 refresh token 的有效期?
維度四:授權模型 —— 不只是基本的 RBAC
RBAC 是底線。沒支援 RBAC 直接淘汰。但對 B2B SaaS,僅靠 RBAC 遠遠不夠。
組織層級權限
用戶屬於不同組織。在每組織內的權限和在平台上的權限不同。
同一個用戶可在 A 組織為 admin,在 B 為 viewer。如果 IdP 無法原生建模,你會重做一套權限系統 —— 多了個真實資訊源。
請問:
- 支援組織層級(而不只是用戶層級)定義角色?
- 單一用戶可否在多組織有不同角色?
- 當前組織 context 能嵌在 token 內?API 會知道 user 操作哪個 org?
多層級授權(auth_level)
金融、醫療、須分權限風險的產品:不是所有已認證的 Session 都有同樣風險。
看報表?Session cookie 夠。匯款?需要 MFA 即時加強認證。
這叫「步進式認證」,需要 auth_level 這個概念在 token 裡。
請問:
- token 能有
auth_level欄位給後端查詢? - 能從 app 觸發步進認證,不必全程重新登入?
auth_level是否有自己獨立過期時間?
IdP 無原生支援,你就得自己重造輪子 —— 當初買 IdP 本來就是要避免自己造!
基於 token 的授權決策
理想:API middleware 讀 token,直接看 org、role、auth_level 做授權決策,不依靠外部服務。
現實:多數 IdP token 只告訴你 user 是誰,允許做什麼還得查一個 API。
多一次查詢就多一個延遲,多一個依賴,多一個失效點。每秒一千請求還要過網路查授權,你不會想這樣。
維度五:遷移 —— 一票否決的標準
沒人愛談這點:多數 IdP 導入最後不是功能不夠好,而是團隊搞不定用戶帳號遷移。
有十萬以上用戶時,遷移不是「加分」,而是「整個專案」的關鍵。
三種遷移策略(IdP 必須支援)
1. 直接匯入密碼 hash
現有用戶密碼都經 bcrypt/argon2 等計算。IdP 能否直接匯入 hash 直接驗證?
能:用戶用舊密碼繼續登入,一切無感。最佳。
不能:全部用戶收到重設密碼 email,遷移會淘汰 30-50% 帳號。不是假設,我們見過真實案例。
2. 漸進式(lazy)遷移
不一次遷移所有用戶,誰登入才搬。首次登入查舊系統,驗證密碼後新 IdP 加帳號。後續就用新 IdP。
大用戶基數最安全,需要:
- 有自訂 auth hook 能查 legacy 系統
- 登入時動態新建帳號
- 能追蹤誰已遷移誰還沒
3. 雙寫(平行運行)
轉換期同時維護舊新 Id 系統。寫同步到兩邊,讀逐步切回新系統。可回滾,但營運複雜度暴增。
遷移紅旗
- 「我們支援 CSV 匯入」 —— 只匯入用戶資料,不含密碼。還是要重設密碼。
- 「我們有遷移指南」 —— 仔細讀。如果寫「用戶需要新設密碼」,就是 30-50% 的帳號流失慘劇。
- 沒提 hash 相容性 —— 廠商沒經歷過大規模遷移。

