每个应用最终都会遇到同一个问题:用户需要登录。听起来简单,但实际并不简单。登录按钮背后是一系列安全决策:密码哈希、会话管理、CSRF 防护、暴力破解防御、多因素认证、密码恢复、邮件验证、令牌过期,以及十几个与应用核心功能无关的问题。

大多数团队通过三种方式处理这个问题:自己构建,然后花几个月修补边界情况;使用 Auth0 这样的托管服务,最终遇到定价瓶颈;或者集成一个库,结果还是需要自己处理一半的安全逻辑。

Ory 是第四种选择,对于关心控制权的开发者和基础设施工程师来说,值得认真了解。

Ory 是什么?

Ory 是一套面向云原生应用的开源身份与访问管理(IAM)工具。它提供认证、授权和身份管理,由五个可独立部署的服务组成:

  • Ory Kratos:用户注册、登录、会话、多因素认证和密码恢复
  • Ory Hydra:用于令牌签发的 OAuth 2.0 和 OpenID Connect 服务器
  • Ory Keto:基于 Google Zanzibar 模型的细粒度权限管理
  • Ory Oathkeeper:用于零信任网络的身份感知反向代理
  • Ory Polis:用于 SAML 2.0 和 SCIM 2.0 集成的企业 SSO 桥接

所有组件均采用 Apache 2.0 许可,使用 Go 编写,可自行托管。

它不是让你被锁定的 SaaS 产品,也不是集成到应用中的库。它是一套经过生产环境验证的服务,你可以与应用一起运行——自行托管、托管,或两者兼有。

Ory 解决的问题

Ory 将开发和维护认证与授权这一复杂且安全关键的任务外包出去。这包括遵守 OAuth 2.0 和 OIDC 等当前安全标准、防范攻击,以及提供统一的身份层,避免不同应用之间的数据孤岛。

换句话说:Ory 让你的团队停止编写认证代码,开始交付产品功能。

替代方案——自己构建认证——意味着你要永久承担每一个安全决策。Argon2 配置、时序安全比较、CSRF 令牌生命周期、恢复令牌过期、权限提升后的会话轮换。这些都是可以解决的问题,但这不是你需要解决的问题。这是 Ory 的问题。

Ory 生态系统:五个核心组件

Ory 是一套基于微服务架构的云原生 IAM 组件。它将身份、认证和授权分离为专用服务,可以独立使用,也可以组合使用。

Ory Kratos - 身份管理

Kratos 处理与用户是谁以及如何证明身份相关的所有事情:

  • 用户注册和登录
  • 会话管理
  • 密码恢复和邮件验证
  • 多因素认证(TOTP、WebAuthn、通行密钥)
  • 社交登录(通过 OIDC 的 Google、GitHub、Apple)
  • 账户设置

Kratos 是无头的。它没有内置 UI。它暴露一个 REST API,你的应用调用它来驱动认证流程。你的登录页面是应用中的一个普通页面;Kratos 处理其背后的安全逻辑。这让你在安全不受影响的情况下,完全控制品牌和用户体验。

Ory Hydra - OAuth2 和 OpenID Connect

Hydra 是一个经过认证的 OAuth 2.0 和 OpenID Connect 服务器。它处理:

  • 签发访问令牌、刷新令牌和 ID 令牌
  • 授权码、客户端凭证和设备授权流程
  • 令牌内省和撤销
  • 机器对机器和服务对服务认证

如果你需要你的应用充当 OAuth2 提供者,让用户授权第三方应用访问他们的数据,或者启用服务间认证,Hydra 就是你需要的组件。它使用 Go 编写,设计用于无状态水平扩展。

Ory Keto - 细粒度权限

Keto 实现了 Google 的 Zanzibar 权限模型,与支持 Google Drive 共享权限的系统相同。它处理:

  • 基于关系的访问控制(ReBAC)
  • 大规模策略评估
  • 权限继承和传播(“Alice 可以编辑这个文档吗?”)

大多数应用从简单的基于角色的访问控制开始,最终需要更细致的东西。Keto 为你提供了一条无需重写认证层就能实现这一目标的路径。

Ory Oathkeeper - 身份感知代理

Oathkeeper 是一个反向代理和访问控制决策 API,在每个传入的 HTTP 请求到达你的服务之前验证其身份:

  • 验证 OAuth2 令牌、会话 cookie、API 密钥和 mTLS
  • 使用身份声明重写请求头(例如 X-User-Id)
  • 为 HTTP 服务启用零信任网络
  • 与 Nginx、Traefik 和 Kubernetes Ingress 控制器配合使用

可以把它想象成 HTTP 流量的 PAM 模块——每个请求在到达你的应用代码之前,都会在网关处进行认证和授权。

Ory Polis - 企业 SSO 桥接

Polis 弥合了传统企业身份协议与现代 OAuth2/OIDC 之间的差距:

  • 转换 SAML 2.0 ↔ OpenID Connect 流程
  • 支持 SCIM 2.0 实现自动用户配置和取消配置
  • 使企业客户能够将现有的 IdP(Okta、ADFS、Ping)与 Ory 驱动的应用一起使用

请注意,Polis 是 Ory 企业许可的一部分,在免费开源版本中不可用。

组件如何协同工作

你不必全部使用。这正是模块化设计的意义所在。

一个典型的入门栈:

Browser
│
▼
Your App (Node.js / Go / Python / anything)
│
├── Calls Kratos for login, registration, sessions
│
└── Calls Hydra for OAuth2 tokens (if needed)
│
└── Oathkeeper validates tokens at the API gateway
│
└── Keto checks fine-grained permissions

一个构建 SaaS 应用的小团队可能只从 Kratos 开始。一个构建内部工具的平台团队可能会添加 Hydra 用于机器对机器认证。一个拥有复杂多租户权限的公司最终会添加 Keto。一个需要为使用 SAML IdP 的企业客户提供服务的公司会添加 Polis。

每个服务都可以独立运行、独立扩展、独立替换。

谁在生产环境中使用 Ory?

最突出的例子:OpenAI。

据在线出版物 Newstack 报道,“OpenAI 用 Ory Hydra 替换了其旧版登录系统,以为 900 百万周活跃用户扩展身份管理,实现了零停机时间和完全的 IAM 控制”。

最初,OpenAI 的快速用户增长压垮了他们之前的 CIAM 解决方案。他们迁移到了由可扩展数据库支持的自行托管的 Ory Hydra,用于为 ChatGPT 用户签发和管理令牌。

根据官方案例研究,Ory 为“前所未有的每秒登录次数”提供了深度可观测性和弹性,并且关键的是,让 OpenAI 拥有了对其身份流程的所有权,没有供应商锁定。

除了 OpenAI,Ory 还为其开源、自管理和托管云环境中的数万个活跃项目提供服务——覆盖数十亿身份和数万亿次交易。

部署 Ory 的三种方式

1. 开源(自行托管,免费)

所有四个核心开源组件(Kratos、Hydra、Keto、Oathkeeper)均采用 Apache 2.0 许可,并在 GitHub 上可用。你在自己的基础设施(裸机、虚拟机、Docker、Kubernetes)上运行它们,完全控制数据、配置和升级节奏。

最适合:具有 DevOps 能力、合规要求或对大规模成本敏感的团队。

2. Ory 企业许可(OEL)

自行托管,附带商业支持:SLA、安全补丁保证、包含经过验证构建的私有 Docker 仓库,以及直接联系 Ory 工程师。添加了仅限企业使用的组件,包括 Ory Polis(SAML、SCIM)和高级 B2B 联合。

最适合:需要为数据主权自行托管,但需要生产级支持合同的企业团队。

3. Ory Network(托管云)

一个完全托管、全球分布的 Ory 栈 SaaS 版本。

定价说明: 在做出决定前,请访问 ory.com/pricing 核实当前费率,因为定价经常变动。

最适合:希望快速行动而无需管理基础设施的团队,或者在决定是否自行托管之前起步的团队。

Ory Network 的关键优势:以后切换到自行托管只需要更改配置中的 URL。你的应用代码无需更改。

Ory 与 Auth0、Keycloak 和 Firebase 的比较

谁应该(和不应该)使用 Ory

Ory 非常适合你,如果:

  • 你正在构建一个面向客户的应用,需要扩展到数万用户以上
  • 你希望完全拥有用户数据和身份基础设施
  • 你有工程能力来集成 API 优先的服务
  • 你需要为合规、数据驻留或 GDPR 要求而自行托管
  • 你厌倦了 Auth0 的定价随用户数量增长
  • 你正在构建需要身份的 AI 代理或机器对机器工作流

Ory 可能不适合你,如果:

  • 你需要在一小时内零配置就能运行(Auth0 或 Firebase 启动更快)
  • 你有非技术操作人员需要通过 UI 管理身份(Keycloak 有更好的管理控制台)
  • 你需要在免费层使用 SAML 2.0(Keycloak 支持;Ory 需要企业许可)
  • 你正在运行一个规模不成问题的小型个人项目

下一步做什么?

Auth0 多年来一直是最受欢迎的身份平台之一。它很精致,文档完善,可以让大多数应用在很短的时间内从零到实现可用的登录流程。

但随着应用的增长,许多团队开始寻找提供更低长期成本、自行托管选项、开源组件以及对用户数据有更大控制权的替代方案。

如果你想尝试 Ory,你很幸运。请阅读以下指南,将 Auth0 迁移到 Ory:

Ory 的存在是因为认证是一个已解决的问题,但大多数团队在时间压力下不断重新解决它,而且解决得很糟糕。它为你提供了一个经过生产环境验证的身份栈,运行在 OpenAI 规模下,基于开放标准,没有供应商锁定,你可以逐行检查。

当然,Ory 有陡峭的学习曲线。但回报是值得的。