加载失败
这是一个 Show HN 帖子,介绍 Ory Kratos(一个 cloud-native、自托管的 Auth0 替代方案),讨论集中在其生产可用性、文档/配置难度以及哪些企业功能被放在商业许可下。评论里引用了具体生产部署数据与运维经验,并把 Kratos 放在 Ory 生态(如 Ory Hydra、OathKeeper、Keto、Polis)中讨论,同时与 Keycloak(开源 Java IAM)、Authentik(自托管 IdP)、Zitadel(身份平台)、Kanidm(Rust 实现)等替代方案比较。讨论还涉及 OAuth2/OIDC、SAML、SCIM、magic link、TOTP 等认证/授权标准的复杂性,以及在自托管场景下关于文档、许可证与安全(账户恢复、存储加密、补丁 SLA)的权衡。
多位使用者报告 Ory Kratos 在真实生产环境中可稳定运行且具扩展性。有人给出具体部署数据:管理约 300 万用户、每天约 20 万次登录/登出/会话/JWT 查询,仅用四个 1C/2G 的 k8s pod(另加 courier)配合一个 proxied 4c8g Postgres 即能满足负载,并称维护简单且 API 完整。评论也指出 Kratos 与 Ory 生态(如 Ory Hydra、OathKeeper、Keto)组合能够覆盖大部分认证与授权需求,但有经验者建议把 Kratos 作为独立服务运行而不是把它作为应用库直接嵌入,以避免依赖膨胀和运行时复杂性。总体结论是功能强且能在大规模场景使用,但仍需运维与架构经验来配置和监控。
多条评论抱怨官方文档特别是 OSS 部分欠缺,常常不得不读源码或借助工具来定位实现和正确配置。有人描述浏览器流程实现困难、YAML 与 environment variable 的行为不一致,导致本应数周的工作拖成数月;另有用户觉得 backend-driven UI 设计不直观,配置项非常多且分散。尽管 Kratos 有像动态表单这样的亮点,但整体上手成本和排错成本被认为偏高,文档改进被反复提出为迫切需求。
讨论聚焦于哪些企业级功能被放到商业许可(Ory Enterprise License,OEL)里:评论中列举 SCIM、SAML、组织登录(SSO)、CAPTCHA 等并不在 Kratos 的开源版中。有人指出 Ory Polis(用于 SAML/SCIM 支持的项目)可以在 OSS 生态中填补部分空缺,但 Polis 与 OEL 都带有企业支持、CVE 补丁 SLA 与多租户/扩展能力的商业承诺。对此有分歧:部分人认为商业化是维持项目与提供企业 SLA 的合理方式,另一些人则把关键功能放在付费版视为开源承诺的背离并警惕可能的“red flag”。评论还把 Ory 的做法与 Authentik、Zitadel 的许可证策略进行对比讨论。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6]
评论频繁把 Kratos 与 Keycloak、Authentik、Zitadel、Kanidm、Dex 等替代品对比,强调各自的权衡。Keycloak(开源 Java-based IAM)被认为扩展性和功能丰富但 UI/数据模型和 JVM 生态带来运维复杂度;Authentik 被多次推荐为上手简单的自托管 IdP,但其对 Docker 的依赖也被部分用户视为限制;Zitadel 在一些用户眼中更好但有许可证调整争议;Kanidm(Rust)与 Dex 则因轻量或简单被小规模部署者青睐。还有人提到针对 TypeScript 生态的 Better Auth、学术型 Indigo IAM 等,表明选择常取决于团队语言栈、运维偏好与是否需要企业协议(SAML/SCIM/OAuth2)支持。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7]
评论中提出若干安全操作与存储层面的担忧:账户恢复流程中使用 6 位邮件验证码被批评熵不足,尽管通常有超时限制,但在短时间内的盲猜仍有成功概率并可被脚本化攻击。建议更高熵的 token 或 magic link/UUID 型方案,以及限制尝试次数和更长/智能的锁定策略。另有关于把认证数据放在 MySQL/Postgres 的争议,讨论涉及字段级加密、备份被滥用的风险以及对存储篡改的检测需求,有人建议在应用层加密或使用能提供加密验证与分布式一致性的存储设计来降低风险。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6]
IdP (Identity Provider): 用于验证和管理用户身份的服务,负责登录、会话、用户元数据与令牌发放,典型实现包括 Ory Kratos、Keycloak、Authentik 等。
OAuth2 / OIDC: OAuth2 是用于授权的框架,OIDC(OpenID Connect)是在其之上提供身份层的协议,常用于第三方登录、SSO 和发放访问/身份令牌。
SAML: SAML(Security Assertion Markup Language)是传统的企业级单点登录(SSO)协议,常用于与企业目录或身份提供商对接,Kratos 本体不直接实现 SAML,需要额外组件桥接。
SCIM: SCIM(System for Cross-domain Identity Management)用于跨域的用户与群组自动化同步与管理,常用于企业目录与 SaaS 的用户生命周期同步。
Ory Hydra: Ory Hydra 是 Ory 生态中的开源 OAuth2 / OIDC 授权服务器,负责处理授权码流、token 发放与 OAuth2 相关流程,常与 Kratos(认证)配合使用。