2025 年五大開源身份驗證與存取管理(IAM)供應商
比較 Logto、Keycloak、NextAuth、Casdoor 和 SuperTokens 的功能、協定、整合、優缺點,以找出最適合你身份驗證和授權需求的 OSS。
什麼是 IAM 供應商?
身份驗證與存取管理(IAM)供應商是一種確保對資源安全、受控訪問的系統。它結合四個支柱:
- 身份驗證:驗證用戶身份(例如:密碼、生物識別、社交登入)。
- 授權:根據角色或政策授予權限。
- 用戶管理:處理配置、角色和審計。
- 組織管理:結構化團隊、權限和多租戶管理。 IAM 工具對強制實行安全政策、防止洩漏以及滿足 SOC 2、GDPR 和 HIPAA 等合規標準至關重要。
選擇開源 IAM 解決方案的關鍵考量
以下是核心需求:
-
適合整合的 SDK 和部署靈活性: 確保與你的技術架構(例如:語言、框架、資料庫)相容,並提供流行的部署選項(例如:npm 包、Docker 容器、GitPod 整合或一鍵託管)。這有助於減少設置時間並加速產品上市時間。
-
協定支援以達成互通性: 必須支援 OAuth 2.0、OpenID Connect (OIDC)、SAML 和 LDAP,以整合第三方應用和身份供應商(如 Google、Apple、Azure AD 等)。開放標準可最大限度地減少供應商鎖定並簡化聯合身份工作流程。
-
適合商業需求的功能模組化: 選擇一個提供模組化組件來滿足當前需求的解決方案,並可隨著未來的需求而擴展:
- 身份驗證:密碼、無密碼、社交登入、SSO、生物識別和 M2M 認證。
- 授權:RBAC、ABAC 和 API 保護。
- 管理:用戶生命週期工具、審計日誌、webhooks 和合規報告。
- 安全:MFA、加密、密碼政策、暴力破解保護、機器人檢測和黑名單。選擇具有透明安全實踐的項目(SOC2 / GDPR 合規)。
-
用戶體驗(UX)優化: 優先選擇擁有 預構建身份驗證流程(登入、註冊、密碼重置)的解決方案,以減少開發工作。確保終端用戶流程直觀、移動友好且可定制,以提高轉換率。
-
自定義和擴展性: API 和 webhooks 應允許根據獨特的商業規則來定制身份驗證工作流程、UI 主題和策略邏輯。避免 "黑盒" 解決方案——選擇透明、社區驅動的代碼。
以下是長期成功差異化因素:
-
開發者體驗(DX): 完整的文檔、代碼示例和沙箱環境(例如:Postman 集合、CLI 工 具)以及低代碼管理控制台可簡化設置並減少錯誤。
-
社群和企業支持: 一個繁榮的社群(Discord、GitHub)可用於故障排除和知識共享。企業支持選項(SLAs、專屬工程)為關鍵部署提供可靠性。
-
可擴展性: 定期更新以防範零日漏洞和新興標準(例如:FIDO2)。混合部署選項(OSS + 雲端)簡化了擴展並降低了運營開銷。
這些條件對於開源項目來說似乎有些苛刻,但已經有服務可以滿足我們來看看。
前 5 大開源 IAM 供應商
- Logto:開發者為先的 IAM,集身份驗證、授權、用戶管理和多租戶於一體。它無需依賴任何框架,支援 OIDC/OAuth/SAML 並完全免費。
- Keycloak:企業級協定強者(SAML/OAuth/LDAP),適合需要細粒度控製和自託管的組織。
- NextAuth:為 Next.js 開發者量身定制的輕量級認證庫,簡化社交登入、無密碼驗證和會話管理。
- Casdoor:以 UI 為主導的 IAM 和單一登入(SSO)平台,具有網頁 UI 支援 OAuth 2.0、OIDC、SAML、CAS、LDAP 和 SCIM。
- SuperTokens:基於 OAuth 2.0 的身份驗證解決方案,具有開源靈活性和商業可擴展性。
#1 Logto
Logto 是現代應用和 SaaS 產品的開源 Auth0、Cognito 和 Firebase 验證替代選擇,支援 OIDC、OAuth 2.0 和 SAML 開放 標準進行身份驗證和授權。
主頁 | GitHub Repo | 文檔 | Discord 社群
Logto OSS 的主要功能
- 協定:OIDC、OAuth 2.0、SAML 2.0
- 官方 SDK:
- 官方 SDK:Android、Angular、Capacitor JS、Chrome Extensions、.NET Core、Expo、Express、Flutter、FlutterFlow、Go、Java Spring Boot、Next.js(Page 和 App Router)、Auth.js (NextAuth)、Nuxt、Passport.js、PHP、Python、React、Ruby、SvelteKit、iOS、Vanilla JS、Vue、Webflow、WordPress、Hasura 和 Supabase。
- 自定義整合:傳統網頁應用、SPA、移動應用、M2M、OAuth 應用和 SAML 應用。
- 身份驗證方法:密碼、Email 和 SMS 無密碼、社交登入、企業 SSO、多重身份驗證(MFA),使用身份驗證器 TOTP / 通行密鑰 / 備用碼、個人訪問令牌、Google One Tap、邀請、帳戶連結和 OAuth 同意流程。
- 授權:API 保護、用戶/M2M 的 RBAC、組織級別的 RBAC、JWT/不透明令牌驗證和自定義令牌聲明。
- 多租戶:組織模板、成員邀請、每個組織的 MFA、即時配置(JIT),以及為每個租戶定制的登入體驗。
- 用戶管理:用戶模仿、用戶建立和邀請、暫停用戶、審計日誌和用戶遷移。
- 用戶體驗:提供美觀的、即時可用且完全可自定義的身份驗證流程,通過身份聯合管理,實現統一的多應用全渠道登入體驗。
- 供應商整合:
- 社交供應商:Google、Facebook、Microsoft、Apple、GitHub、X.com、LinkedIn、Slack、Amazon、Discord、Line、WeChat、Kakao 等。可完全自定義,支援 OpenID Connect 或 OAuth 2.0。
- 企業供應商:Microsoft Azure AD、Google Workspace、Okta 等。可完全自定義,支援 OpenID Connect 或 SAML。
- Email 傳送供應商:AWS、Mailgun、Postmark、SendGrid 等,可透過 SMTP 或 HTTP 通話配置。
- SMS 傳送供應商:Twillio、SMS Aero、GatewayAPI、Vonage、Aliyun 和 Tencent。
Logto OSS 的優點
- 100% 免費 OSS:所有核心功能(包括 SSO、RBAC、組織等)均可免費使用;沒有被收費牆擋住的必要功能。
- 企業級安全:SOC2 準備好的架構、MFA、SSO、API 保護、多租戶隔離、暴力破解保護和審計日誌。
- 成為身份供應商:使用 Logto,你可以將你的服務轉變為身份供應商,實現多應用、平臺和設備之間的無縫整合。支援 OIDC、OAuth 2.0 和 SAML 2.0,以實現通用的單一登入和身份聯合管理。
- 外部生態系統整合以促進夥伴關係:Logto 支援 M2M 身份驗證、個人訪問令牌、用戶模仿(令牌交換)、第三方應用的 OAuth 授權,包括同意屏幕和第三方身份供應商的可定制連接,全部促進你的產品增長。
- 對開發者友好:結構良好的 API、SDK、文檔和直觀的控制台。
- 可擴展的部署:Logto 可作為免費的 OSS 使用,而 Logto Cloud 提供管理服務,具有可靠的更新和金融支持,提供長期支持。
- 活躍社群:響應迅速的 Discord 社群和積極的核心團隊能確保及時解決問題並持續改進特性。
- 輕量且現代化:以現代設計原則構建,優化速度和效率,適合個人開發者、新創公司和企業。
Logto OSS 的缺點
- 基於重定向的身份驗證:基於 OIDC 需要重定向至身份供應商,可能不適合需要無重定向體驗的場景。不過,Logto 提供嵌入式的直接登入組件(社交、SSO 等)來解決這個問題。
- 有限的 B2E 特性:尚未內建 LDAP/Active Directory 同步和極為細粒度的授權。
- 成長的生態系統:相對於老牌解決方案社群規模較小,但正在迅速發展並有貢獻。
#2 Keycloak
Keycloak 是一個企業就緒的 IAM 解決方案,擁有對 SAML、OAuth 和 LDAP 的強大支持,特別適合優先考慮協定靈活性、自託管和細粒度控製的組織。
主頁 | GitHub Repo | 文檔 | Slack 社群
Keycloak 的功能
- 協定:OIDC、OAuth 2.0、SAML 2.0、LDAP
- 官方 SDK:Java、JavaScript、Node.js、C#、Python、Android、iOS、Apache HTTP Server
- 身份驗證方法:單一登入(SSO)、多因素身份驗證(MFA)、社交登入、Kerberos。
- 用戶體驗:即時可用的登入介面和賬戶管理控制台,具有可自定義的 HTML、CSS 和 Javascript。
- 細粒度授權:基於角色、屬性或其他標準的訪問控製。
- 目錄同步:從現有企業目錄(LDAP/Active Directory)中同步。
- 可插拔架構:自定義擴展和整合。
Keycloak 的優點
- 企業的全面功能集:如 SSO、MFA、身份中介、用戶聯合,和多協定支持(OAuth 2.0、OpenID Connect、SAML)。
- 可定制的用戶介面和管理設定:提供默認的登入 UI 和管理控制台,可定制主題和擴展。
- 整合和擴展性:能夠輕鬆與外部身份供應商(如 LDAP/AD 和社交登入)整合,並通過插件支持自定義擴展。
- 活躍社群和持續開發:定期更新、活躍社群支持和 Red Hat 的支持保證持續改進和安全補丁。
Keycloak 的缺點
- 學習曲線陡峭:配置領域、客戶端和身份驗證流程可能頗具挑戰性,尤其對於沒有深厚 IAM 經驗的團隊而言。
- 自定制困難:雖然靈活,但調整 UI 通常需要使用 FreeMarker 模板或 自定義 SPI,這可能繁瑣。
- 高維護需求:頻繁的重大更新和重大變更使升級變得複雜,需要在伺服器和客戶端庫之間進行仔細協調。
- 資源密集型:在高可用性或容器化設置中運行 Keycloak 可能需要相當多的 CPU/RAM,並需要精細性能調整。
- 文檔缺乏:基礎知識相對覆蓋充分,但高級功能和邊緣案例通常缺乏詳細或最新的文檔。
#3 Auth.js/NextAuth.js
NextAuth.js 是一款專為 Next.js 設計的輕量級驗證庫,提供社交登錄、無密碼驗證和會話管理的簡單設置,且所需配置極少。
主頁 | GitHub Repo | 文檔 | Discord 社群
NextAuth.js 的功能
- 協定:OAuth 2.0、OIDC
- 框架:Next.js、Node.js 和無伺服器平臺(例如:Vercel、AWS Lambda)
- 身份驗證方法:社交登入、魔術連結、認證、WebAuthn(通行密鑰)。
- 身份驗證體驗:默認的登入、登出、錯誤和驗證頁面;並可覆蓋它們以創建一個完全品牌化的自定義用戶體驗。
- 會話管理:支持基於 JSON Web Token (JWT) 的無狀態會話和資料庫支持的會話。
NextAuth.js 的優點
- 與 Next.js 的無縫整合:專為 Next.js 設計,能夠順利運行於伺服端渲染 (SSR)、靜態網站生成 (SSG) 和 API 路由。開發人員可以輕鬆使用如
useSession
的 hooks 和像SessionProvider
的組件管理驗證狀態。 - 可自定義的身份驗證流程:內建 callbacks 用於登入、JWT 處理和會話管理,允許深度自定制,讓開發人員完全控制身份驗證行為和令牌處理。
- 活躍的社群和生態系統:強大的開發者社群貢獻教程、範例和討論,使排障更容易並擴展功能。
NextAuth.js 的缺點
- 有限的 IAM 功能:缺乏 SMAL、SSO、MFA、多租戶和其他針對 B2B 或 B2E 用例的關鍵驗證特性。它專注於身份驗證,無內置的授權或用戶管理支持。
- 不一貫和低劣的文檔:許多用戶反映文檔分散、過時且難以理解,特別是在升級到新版本或過渡到應用程序目錄結構時。
- 穩定性和漏洞報告:開發人員曾遭遇會話處理問題、刷新令牌漏洞和不可預測的行為,有時需使用變通方法或替代解決方案。
- 學習曲線陡峭:API 和配置可能感覺複雜,尤其對於初學者。頻繁的重大變更—如在 NextAuth.js v5 beta 中引入的變更—增加了整合挑戰。
#4 Casdoor
Casdoor 是一款以 UI 為主的身份驗證及存取管理(IAM)/單一登入(SSO)平臺,提供支持 OAuth 2.0、OIDC、SAML、CAS、LDAP、SCIM、WebAuthn、TOTP、多因素身份驗證(MFA)、RADIUS、Google Workspace、Active Directory 和 Kerberos 的網頁 UI。
主頁 | GitHub Repo | 文檔 | Discord社群
Casdoor 的功能
- 協定:OAuth 2.0、OIDC、SAML、CAS、LDAP、SCIM
- 官方 SDK:Android、iOS、React Native、Flutter、Firebase、Unity Games、uni-app、Electro、.Net Desktop、C/C++、JavaScript、前端專用、React、Next.js、Nuxt、Vue、Angular、Flutter、ASP.NET、Firebase、Go、Java、Node.js、Python、PHP、.NET、Rust、Dart、Ruby。
- 身份驗證方法:憑證、Email/SMS 驗證碼、社交登入(OAuth/SAML)
- 身份管理:提供一個集中式的儀錶板來管理用戶、角色、權限和多租戶,和審計日誌。
- 可自定制的 UI 和流程:提供預構建的 UI 模板,且允許自定義登入方法、註冊欄位和身份驗證流程。
- 訪問控製:支持 RBAC 並能與細粒度授權解決方案(如 Casbin)集成以進行高級權限管理。
- 多租戶:使能管理多個組織或 項目於單一實例中。
Casdoor 的優點
- 靈活的整合:Casdoor 提供的豐富 API、SDK 和身份供應商支援使得與各種平臺和外部服務的整合變得簡單。
- 多租戶和聯合能力:內置多租戶和身份中介支援使其適合管理多個客戶或子公司的組織。
- 開源和活躍的社群:由活躍的開發者社群維護,並在如 Casnode 和 QQ 群這類平臺上活躍討論,另外還有定期更新和貢獻。
Casdoor 的缺點
- 安全問題:曾面臨如 SQL 注入(CVE-2022-24124)和任意文件讀取等漏洞問題,需要嚴格的安全配置和及時更新。
- 過時的 UI 設計:與現代身份驗證解決方案相比,預構建的 UI 顯得過時,通常需要自定制以提供精緻的用戶體驗。
- 有限的企業級支持:儘管功能豐富,但某些高級企業功能在成熟度上不及更為成立的平台,有時需要額外的自定制。
- 學習曲線陡峭:高級自定制需具備 Golang 和 React.js 知識,對於不熟悉這些技術的團隊可能會帶來挑戰。雖然有 Swagger API 文檔,但複雜用例的詳盡指南仍然缺乏。
#5 Supertokens
一款面向開發者的身份驗證解決方案,融合開源透明性和商業可擴展性,優化密碼無需、多因素身份驗證(MFA)和會話管理以配合現代應用架構。
主頁 | GitHub Repo | 文檔 | Discord 社群
Supertokens 的功能
- 協定:OAuth 2.0
- 框架和雲端整合:
- 框架:Next.js App Router、Next.js Pages Router、NestJS、GraphQL、RedwoodJS、Capacitor。
- 雲端平臺:AWS Lambda、Netlify、Vercel、Hasura、Supabase。
- 身份驗證方法:
- 免費:密碼、Email/SMS 密碼無需、社交登入。
- 付費:多租戶身份驗證、企業 SSO(SAML)、MFA(TOTP/Email OTP/SMS OTP)、帳號連結。
- 預構建 UI 組件和可自定制的流程:提供即用的 UI 組件以進行登入、註冊和密碼恢復。允許開發者自定制身份驗證流程。
- 多租戶支持(付費):可管理多個租戶(組織或應用),具有企業 SSO 通過 SAML 連結、隔離的用戶資料和每個租戶獨特的登入方法。
- 風險評估(付費):提供一個攻擊保護套件,分析登入嘗試並分配風險分數,可以強製執行額外的安全措施,例如要求 MFA。
Supertokens 的優點
- 清晰的 UI 方法:Supertokens 將 SDK 和身份驗證方法劃分為預構建 UI 和自定義 UI,提供一個明確且靈活的整合體驗。
- 輕量而注重身份驗證:專為身份驗證構建,使其輕量且高效。開源版本包含必要的功能,使其對於新創和小團隊具有成本效益。
- 活躍開發:隨著新特性和改進定期更新,且有一個活躍的 GitHub 社群支持。
Supertokens 的缺點
- OSS 功能限制:需要付費才能使用高級功能如帳號連結、多租戶身份驗證、儀錶板額外用戶、MFA 和攻擊保護套件。
- 有限的企業整合:沒有 SAML 應用整合,這可能會降低與傳統企業系統的相容性。
- 範圍狹窄:主要專注於身份驗證,只有基本的治理控制台功能。缺乏高級授權、租戶管理和企業級身份功能。
- 較小的生態系統:相較於全面的 IAM 解決方案,第三方整合和插件較少。較小的社群可能影響長期支持和可擴展性。
結論
開源 IAM 解決方案種類繁多:
- 全面且可擴展:如 Logto、Keycloak 和 Casdoor,提供更廣泛的身份驗證、授權和用戶管理功能。
- 僅限 身份驗證/授權:如 Supertokens,僅專注於身份驗證。
- 輕量且針對特定框架:如 NextAuth.js,專為特定框架設計。
選擇解決方案時,應考慮你的專案規模、具體需求和未來可擴展性。
Logto 作為一個完全免費且功能豐富的 OSS 解決方案脫穎而出,擁有長期穩定性、活躍的社群和對標準協定的全方位支持。它提供完整的身份驗證、授權和用戶管理套件,使其具有很強的可擴展性。對於需要企業級合規和可靠性的用戶,Logto 的具備成本效益的雲版本提供專業支持,確保平滑遷移。