2025 年五大開源身份和訪問管理 (IAM) 供應商
比較 Logto、Keycloak、NextAuth、Casdoor 和 SuperTokens 的特性、協議、集成、優缺點,以找到適合你身份驗證和授權需求的最佳開源軟體。
什麼是 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 保護。
- 管理:用戶生命周期工具、審計日誌、Webhook 和合規報告。
- 安全性:MFA、加密、密碼政策、暴力破解保護、機器人檢測和黑名單。選擇具有透明安全實踐(SOC2 / GDPR 合規)的項目。
-
用戶體驗 (UX) 優化: 優先選擇具有 預建身份驗證流程(登入、註冊、密碼重置)的解決方案,以減少開發工作。確保最終用戶流程直觀、移動友好且可自定義,以提高轉化率。
-
客製化與可擴展性: API 和 Webhook 應允許自訂身份驗證工作流程、UI 主題和政策邏輯,以符合業務規則。避免 "黑盒" 解決方案——選擇透明、社群驅動的代碼。
以下是長期成功的一些差異化因素:
-
開發者體驗 (DX): 全面的文檔、代碼示例和沙盒環境(例如 Postman 集 合、CLI 工具),以及低代碼管理控制台簡化設置和減少錯誤。
-
社群和企業支持: 繁榮的社群(Discord、GitHub)用於故障排除和知識分享。企業支持選項(SLA、專屬工程)為關鍵任務部署提供可靠性。
-
可擴展性: 定期更新以應對零日漏洞和新興標準(例如 FIDO2)。混合部署選項(OSS + 雲)簡化了擴展,減少了運營開銷。
這些對於開源項目來說似乎有些嚴苛,但已有服務能夠滿足這些要求,讓我們來看看。
五大開源 IAM 供應商
- Logto:以開發者為中心的 IAM,集身份驗證、授權、用戶管理和多租戶於一身。無需框架,支持 OIDC/OAuth/SAML,完全免費開源軟體。
- Keycloak:適合需要精細訪問控制和自行託管的組織的企業級協議強者(SAML/OAuth/LDAP)。
- NextAuth:一款針對 Next.js 開發者的輕量級身份驗證庫,簡化了社交登入、無密碼身份驗證和會話管理。
- Casdoor:以 UI 為主的 IAM 和單一登入 (SSO) 平台,擁有 Web 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 儲存庫 | 文檔 | Discord 社群
Logto OSS 的關鍵功能
- 協議:OIDC、OAuth 2.0、SAML 2.0
- 官方 SDK:
- 官方 SDK:Android、Angular、Capacitor JS、Chrome 擴展、.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。
- 自定义集成:傳統 Web 應用程式、SPA、移動應用程式、M2M、OAuth 應用程式和 SAML 應用程式。
- 身份驗證方法:密碼、電子郵件和 SMS 無密碼、社交登入、企業 SSO、MFA 使用身份驗證器 TOTP / 通行密碼 / 備份碼、個人訪問令牌、Google 一鍵登入、邀請、帳戶連結和 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 完全自定。
- 電子郵件傳遞提供者:AWS、Mailgun、Postmark、SendGrid 等。可通過 SMTP 或 HTTP 調用配置。
- SMS 傳遞提供者:Twillio、SMS Aero、GatewayAPI、Vonage、Aliyun 和 Tencent。
Logto OSS 的優點
- 100% 免費開源軟體:所有核心功能(包括 SSO、RBAC、組織等)免費提供;沒有被鎖定的基本功能。
- 企業級安全:SOC2 準備就緒的架構、MFA、SSO、API 保護、多租戶隔離、暴力破解保護和審計日誌。
- 成為身份供應商:使用 Logto,你可以將服務轉換為身份供應商,實現跨多個應用程式、平台和設備的無縫集成。支持 OIDC、OAuth 2.0 和 SAML 2.0 實現通用單一登入和聯合身份管理。
- 外部生態系統集成和合作夥伴關係:Logto 支持 M2M 身份驗證、個人訪問令牌、用戶冒充(令牌交換)、第三方應用程式的 OAuth 授權(帶有同意屏幕),以及第三方身份供應商的可自訂連接,所有這些都促進了產品增長。
- 開發者友好:結構良好的 API、SDK、文檔和直觀的控制台。
- 可擴展的部署:Logto 作為免費的開源軟體提供,而 Logto 雲端則提供由託管服務提供的保證更新和財務支持的長期支持。
- 活躍的社群:響應迅速的 Discord 社群和積極的核心團隊確保及時解決問題並持續改進功能。
- 輕量且現代:採用現代設計原則構建,優化速度和效率,適合個人開發者、初創公司和企業。
Logto OSS 的缺點
- 基於重定向的身份驗證:基於 OIDC,需要重定向到身份供應商,可能不適合需要非重定向體驗的場景。但是,Logto 提供嵌入式直接登入組件(社會、SSO 等)來解決這一問題。
- 有限的 B2E 特性:尚未內建 LDAP/Active Directory 同步和超細粒度授權。
- 成長中的生態系統:相比老牌解決方案社群較小,但隨著貢獻快速發展。
#2 Keycloak
Keycloak 是一款企業準備好的 IAM 解決方案,擁有對 SAML、OAuth 和 LDAP 的強大支持,適合重視協議靈活性、自行託管和精細訪問控制的組織。
主頁 | GitHub 儲存庫 | 文檔 | 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 和社交登入),並支持通過插件自訂擴展。
- 活躍的社群和持續開發:定期更新,活躍的社群支持,以及紅帽支持,確保持續改進和安全補丁。
Keycloak 的缺點
- 學習曲線陡峭:設置領域、客戶端和身份驗證流程可能很棘手,特別是對於沒有深厚 IAM 经验的團隊來說。
- 客製化挑戰:雖然靈活,但微調 UI 往往需要使用 FreeMarker 模板或自定義 SPI,這可能會變得麻煩。
- 高維護:頻繁的重大更新和破壞性變更使升級變得棘手,需要在服務器和客戶端庫間仔細協調。
- 資源密集:在高可用性或容器化設置中運行 Keycloak 可能需要顯著的 CPU/RAM 和仔細的性能調優。
- 文檔缺口:雖然基本內容覆盖得很好,但高级功能和边缘案例通常欠缺详细或最新的文档。
#3 Auth.js/NextAuth.js
NextAuth.js 是一款為 Next.js 設計的輕量級身份驗證庫,通過簡單設置即可進行社交登入、無密碼身份驗證和會話管理,配置最小。
主頁 | GitHub 儲存庫 | 文檔 | Discord 社群
NextAuth.js 的功能
- 協議:OAuth 2.0、OIDC
- 框架:Next.js、Node.js 和 serverless 平台(如 Vercel、AWS Lambda)
- 身份驗證方法:社交登入、魔法鏈接、憑據、WebAuthn(Passkey)。
- 身份驗證體驗:默認登入、登出、錯誤和驗證頁面;可以覆蓋它們以創建完全品牌和定制的用戶體驗。
- 會話管理:支持基於 JSON Web 令牌 (JWT) 的無狀態會話和基於數據庫的會話。
NextAuth.js 的優點
- 無縫的 Next.js 集成:專為 Next.js 設計,它可以與服務器端渲染 (SSR)、靜態站點生成 (SSG) 和 API 路由順利配合使用。開發者可以輕鬆使用
useSession
等鉤子和SessionProvider
等組件管理身份驗證狀態。 - 可自定義的身份驗證流程:內建的回調功能用于登入、JWT 處理和會話管理允許深度定制,使開發者能夠完全控制身份驗證行為和令牌處理。
- 活躍的社群和生態系統:強大的開發者社群貢獻教程、示例和討論,使故障排除更容易並擴展功能。
NextAuth.js 的缺點
- 有限的 IAM 功能:缺乏 SMAL、SSO、MFA、多租戶等關鍵身份驗證功能,無內建授權或用戶管理支持。
- 不一致和文檔差:許多用戶反映文檔分散,過時且難以理解,尤其是在升級到新版本或過渡到應用程式目錄結構時。
- 穩定性和漏洞問題:開發者遇到會話處理問題、刷新令牌漏洞和不穩定行為,有時需要變通措施或其他解決方案。
- 學習曲線陡峭:API 和配置可能讓初學者感到複雜。頻繁的破壞性更改,例如 NextAuth.js v5 beta 中引入的更改,增加了集成難度。
#4 Casdoor
Casdoor是一個以UI為主的身份訪問管理(IAM)/聯合登入(SSO)平台,擁有Web UI,支持OAuth 2.0、OIDC、SAML、CAS、LDAP、SCIM、WebAuthn、TOTP、MFA、RADIUS、Google Workspace、Active Directory 和 Kerberos。
主頁 | GitHub 儲存庫 | 文檔 | Discord 社群
Casdoor 的功能
- 協議:OAuth 2.0、OIDC、SAML、CAS、LDAP、SCIM
- 官方 SDK:Android、iOS、React Native、Flutter、Firebase、Unity 游戲、uni-app、Electro、.Net 桌面、C/C++、Javascript、前端專用、React、Next.js、Nuxt、Vue、Angular、Flutter、ASP.NET、Firebase、Go、Java、Node.js、Python、PHP、.NET、Rust、Dart、Ruby。
- 身份驗證方法:憑證、電子郵件/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
一種以開發者為中心的身份验证解决方案,结合了开源透明性和商业可扩展性,提供了经优化的无密码、多因素身份验证和现代应用架构的会话管理。
主頁 | GitHub 儲存庫 | 文檔 | Discord 社群
Supertokens 的功能
- 協議:OAuth 2.0
- 框架及雲集成:
- 框架:Next.js App Router、Next.js Pages Router、NestJS、GraphQL、RedwoodJS、Capacitor。
- 雲平台:AWS Lambda、Netlify、Vercel、Hasura、Supabase。
- 身份驗證方法:
- 免費:密碼、電子郵件/SMS 無密碼、社會登入。
- 付費:多租戶身份驗證、企業 SSO(SAML)、MFA(TOTP/電子郵件 OTP/SMS OTP)、帳戶連結。
- 預建 UI 組件和可自定義流程:提供即用型 UI 組件用於登入、註冊和密碼恢復。允許開發者自定義身份驗證流程。
- 多租戶支持(付費):允許管理多個租戶(組織或應用程式),使用 SAML 提供的企業 SSO 連接、獨立的用戶數據和每個租戶的獨有登入方法。
- 風險評估(付費):提供一個攻擊保護套件,分析登入嘗試並分配風險分數。可以實施額外安全措施,如要求 MFA。
Supertokens 的優點
- 清晰 的 UI 方法:Supertokens 將 SDK 和身份驗證方法分為預建 UI 和自定義 UI,提供清晰而靈活的集成體驗。
- 輕量 & 專注於身份驗證:專為身份驗證設計,使其輕量且高效。開源版本包含必要的功能,對於初創公司和小型團隊來說性價比高。
- 活躍開發:定期更新新功能和改進,由活躍的 GitHub 社群支持。
Supertokens 的缺點
- 開源功能限制:需要付費獲得高級功能如帳戶連結、多租戶身份驗證、儀表板的額外用戶、MFA 和攻擊防護套件。
- 有限的企業集成:缺少 SAML 應用程式集成,可能減少與傳統企業系統的兼容性。
- 狹窄的領域:主要專注於身份驗證,擁有的管理控制台功能有限。缺少高級授權、租戶管理和企業級身份功能。
- 小型生態系統:與全面的 IAM 解決方案相比,第三方集成和插件較少。社群較小,可能影響長期支持和可擴展性。
結論
開源 IAM 解決方案有多種類型:
- 全面和可擴展:例如 Logto、Keycloak 和 Casdoor,提供更廣泛的身份驗證、授權和用戶管理功能。
- 僅身份驗證/授權:例如 Supertokens,專注於身份驗證。
- 輕量的、框架專用的:例如 NextAuth.js,專為特定框架設計。
在選擇解決方案時 ,考慮你的專案規模、具體需求和未來的可擴展性。
Logto 作為一個完全免費且功能豐富的開源解決方案脫穎而出,擁有長期穩定性,活躍的社群,並全面支持標準協議。它提供完整的身份驗證、授權和用戶管理套件,使其具有高度可擴展性。對於需要企業級合規和可靠性的用戶,Logto 的具成本效益的雲版本確保無縫遷移和專門支持。