登录仍可正常工作,却无法满足新需求:客户希望使用自己的身份提供商、多款应用需要共享登录,或产品需要不同的登录品牌形象。最佳 Auth0 替代方案取决于哪些行为必须改变,以及谁来运维替代系统。
Auth0 替代方案应解决具体限制,才值得付出迁移成本。保留可用的 Auth0 集成可能更合理。先明确应用和客户的登录需求;员工身份需要单独评估。先按集成范围筛选,再决定购买托管服务还是自行运维身份系统。
要点速览
| 选项 | 最适合的工作负载 | 部署模式 | 主要取舍 |
|---|---|---|---|
| Keycloak | 使用现有身份源、共享登录的多款应用 | 自行运维的身份服务 | 自行负责生产配置,包括安全端点和管理 |
| ZITADEL | 服务多个客户组织、支持委派角色的产品 | 云端或自托管 | 将客户映射到组织和项目,再定义应用访问权限 |
| FusionAuth | 需要不同登录页面品牌形象的客户应用 | FusionAuth Cloud 或自托管 | 应用专属主题与租户主题的授权要求不同 |
| Logto | 需要现成登录流程和 SDK 集成的产品应用 | 云端或自托管 | 检查所选部署的管理访问和定制能力 |
| Supabase Auth | 将身份验证与 Postgres 行级访问规则结合的应用 | 托管服务或自托管技术栈 | 确定需要独立 Auth 还是完整 Supabase 技术栈 |
| Clerk | 提供预制身份验证和账户组件的托管应用登录 | 配合应用 SDK 的托管服务 | 确认框架具备所需组件和定制能力 |
| Authentik | 采用共享登录的多款现有内部应用 | 自托管身份提供商 | 将各应用的集成方式匹配到合适的提供商 |
Keycloak:多应用和联合身份
Keycloak 适用于既需共享登录、又需接受现有系统身份的应用。其项目概览介绍了 OIDC/SAML 身份代理和 LDAP/Active Directory 联合,即接受其他来源的身份。发行说明确认支持 Organizations;评估时应考虑该客户模型。
取舍在于服务运维:其生产指南涵盖 TLS 和管理端点的暴露问题。在将其选为自托管 Auth0 替代方案前,检查现有用户如何映射到目录联合,包括组织成员身份对应用访问决策的影响。如果 VPS 适合该运维模式,我们的 Keycloak 一键应用可提供针对该应用的起点。
ZITADEL:多个客户组织
当多个客户需要在同一产品内独立管理身份时,值得考虑 ZITADEL。其官方仓库介绍了组织、项目、委派角色管理和组织专属品牌形象。可选择 ZITADEL Cloud 或自托管,以客户模型为评估依据。
身份组织的成员关系并不决定应用的数据访问规则。进行委派客户管理时,将每个客户组织映射到用户所需的项目和角色。明确谁可邀请用户和分配角色,再验证应用仍实施预期的客户边界。
FusionAuth:跨客户应用定制登录
FusionAuth 适合需要不同登录品牌形象的客户应用。其应用专属主题文档介绍了使用 FusionAuth 托管登录页面的应用如何采用独立主题。该功能至少需要 Starter;租户级主题在 Community 中可用。当不同客户应用需呈现不同形象时,这一区别很重要。
这里的托管登录页面指登录界面,并不决定谁来托管 FusionAuth。托管方式比较将 FusionAuth Cloud 或自托管与功能套餐选择区分开来。评估用于客户登录的 FusionAuth前,确定品牌形象按租户还是按应用变化。先核对相应授权,再选择基础设施。
Logto:需要现成登录流程的产品应用
Logto 适合既需现成登录界面、又需应用集成的产品。其文档概览介绍了登录流程、管理 Console、API 和 SDK。如果希望身份产品负责构建和维护登录界面,可从这里开始。
Logto 的 OSS 设置文档区分了团队访问 Console 的限制与最终用户功能,包括额外身份验证因素。采用基于 Logto 的产品登录时,确认所选部署支持管理团队及所需登录定制。即使客户登录符合要求,未满足的 Console 访问需求仍应阻止部署。
Supabase Auth:围绕 Postgres 构建的应用
Supabase Auth 适合将登录与数据库访问一并设计的应用。其 Auth 文档介绍了与 Postgres 行级安全(RLS)集成的 JWT 身份验证;RLS 即控制数据库行访问的规则。Auth 也可独立于 Supabase 其他部分使用。
先选集成边界,再选部署方式。完整技术栈会增加身份验证之外的服务;其 Docker README要求事先准备密钥等机密信息、网络安全和备份。检查这个更广泛的后端是否适合应用。我们的 Supabase 一键应用在 VPS 上部署包含 Auth 的完整技术栈,并非仅安装 Auth。
Clerk:带预制界面的托管应用登录
如果托管登录服务和预制应用组件适合技术栈,可考虑 Clerk。其 Next.js 组件参考包含身份验证、用户和组织组件,并支持外观定制。决定采用前,将每个现有登录和账户界面对应到所选框架中有文档的组件。
集成从 Dashboard 中的 Clerk 应用及相应 SDK 开始,详见其 JavaScript 仓库。该仓库是集成工具,并非自托管身份服务器。将未覆盖的行为记为应用开发工作,纳入迁移范围。仅凭 Next.js 文档不能认定所有 SDK 行为相同。
Authentik:多款内部应用和自托管 SSO
Authentik 适合需要 SSO(共享登录)的多款现有内部应用。其提供商文档将应用连接到 OIDC/OAuth2、SAML、LDAP 和代理提供商等身份验证方式。先将各应用支持的方式与提供商匹配,再检查适用于用户的流程。
这一推荐范围小于替换产品的整个客户登录系统。评估替代方案时,将现有应用的登录集成与产品的客户账户要求分开。Authentik 提供自托管 Compose 安装文档。选定这一运维模式后,我们的 Authentik 一键应用可提供 VPS 上的起点。
Auth0 适合谁,何时应保留
如果现有集成满足需求,替换也无经证实的足够收益,就保留 Auth0。Auth0 概览介绍了共享登录、企业联合、用户管理和 MFA,即额外身份验证因素。这些能力支持在评估具体限制时保留正常运行的登录流程。
按 Auth0 当前套餐核对所需功能;平台具备某能力,不代表每种订阅均包含。如果条款合适且希望使用托管身份服务,继续使用可避免不必要的迁移。权衡更换收益、集成工作和中断风险。更换提供商需要比另一份功能清单更充分的理由。
选择 Auth0 替代方案前的检查
替换后的登录界面可能看似正确,但应用仍依赖不同的客户模型或账户关联行为。选择 Auth0 替代方案时,记录必须保持稳定的内容,并指定变更负责人。只保留能在应用中证明满足这些要求的候选方案。
- 列出所需协议、联合、客户组织和关联账户。将机器身份验证与交互式登录分开记录。
- 按具体服务或部署的当前条款核对所需功能和用量单位,包括管理访问。
- 确认身份导出/导入兼容性。单独规划验证因素和通行密钥,同时规划账户关联、回调、域名和会话行为。
- 为升级、恢复、备份和可用性指定负责人。决定采用前验证应用登录行为,分阶段迁移,并在验证失败时保留回退路径。
常见问题
Auth0 替代方案也能替代 Okta 吗?
替换应用登录不自动等于替代面向员工身份的 Okta。Okta Workforce Identity服务于员工、承包商和合作伙伴,涵盖入职/离职及治理访问审查。应将这些职责与 Auth0 的应用身份验证用例分开评估。共享登录不足以证明整个套件等效。
可以通过 API 导出 Auth0 密码哈希吗?
对于 Auth0 托管的数据库用户,密码哈希和私钥无法通过 API 获取。Auth0 的数据导出文档要求通过支持渠道申请。Free 不提供此操作,Auth0 也不保证具体导出时间或日期。另行确认接收系统的导入兼容性。
更改 API 身份验证意味着替换所有登录流程吗?
仅更改 API 身份验证,并不要求替换所有交互式登录流程。Auth0 的应用和 API 场景概览涵盖两者。单独评估服务账户需求,再验证应用是否能在更换 API 路径时保留现有用户登录。不要假定多提供商之间兼容。
讨论
评论
登录后参与讨论。