Ovlt: 一个轻量级、由 Rust 驱动的自托管身份验证服务器
身份验证和授权基础设施通常是系统中最为关键但也最为繁琐的部分。对于希望避免托管平台沉重开销或 JVM 解决方案复杂性的团队来说,寻找一个轻量级、安全且可自托管的替代方案是一项挑战。
Ovlt 是一个自托管的 OAuth2 和 OIDC 服务器,旨在提供专业级的身份验证基础设施,且不带“平台臃肿”。它完全使用 Rust 构建,专注于高性能、严格的租户隔离和极小的资源占用——通常运行仅需 20MB 的内存。
核心架构与关键特性
Ovlt 以单个 Rust 二进制文件的形式交付,整合了现代身份验证的核心组件:OAuth2、用户管理、多租户架构和多因素身份验证 (MFA)。
通过 PostgreSQL RLS 实现租户隔离
Ovlt 在架构设计中最重大的选择之一是它如何处理多租户。Ovlt 并没有仅仅依赖应用层逻辑来过滤数据,而是利用了 PostgreSQL 行级安全性 (RLS)。
在这种模型中,每个请求都会解析租户上下文,然后开启一个租户范围内的事务。数据库本身会强制执行边界,确保在查询执行之前,来自其他租户的数据行对应用程序代码是不可见的。这显著降低了租户间数据泄露的风险,将安全边界移动到了数据层。
安全性与“符合审计要求”的加密
为了应对安全审计和 CTO 的关注,Ovlt 使用 hefesto crate 来采用双信封加密策略。敏感字段——例如电子邮件、TOTP 密钥和 SMTP 密码——在进入数据库之前都会使用 AES-256-GCM 加密进行保护。
通过利用文档化的密钥层级结构和透明的加密层,Ovlt 允许安全团队审计数据在静态存储时是如何被加密的精确机制。这种“零知识”方法确保了即使数据库被攻破,敏感字段仍然是密封的。
通过 TUI 进行管理
与许多需要复杂的基于 Web 的管理控制台的身份验证服务器不同,Ovlt 提供了一个 终端用户界面 (TUI)。该 TUI 用于管理身份验证服务器的整个生命周期,包括:
- 租户和用户创建
- 客户端和角色管理
- Passkey 和会话配置
- 每个租户的 SMTP 设置和 Google/GitHub IdP 集成
- 审计日志
性能与资源效率
Ovlt 将自己定位为传统身份验证提供商的精简替代方案。通过避免使用 JVM、Redis 和各种 sidecar 进程,它实现了通常比单个浏览器标签页还要小的内存占用。这使得它成为边缘部署或资源受限环境下的理想选择,因为在这些环境中,每一兆字节的内存都至关重要。
开源与社区
Ovlt 在 ELv2 许可下源代码可用,并且是公开构建的。该项目鼓励社区贡献,其路线图也向公众开放检查,允许开发者准确地看到项目的走向。
虽然社区建议将其与其他轻量级身份管理器(如 Kanidm)进行比较,但开发人员正专注于开放的路线图和基于用户反馈的迭代开发。