跳到正文

目录

Logto:面向 SaaS 与 AI Agent 的开源现代化认证基础设施

先给判断

给新兴 SaaS 或 AI 产品补一套完整 auth(登录注册、多租户、企业 SSO、RBAC、MFA),Logto 是当前开源方案里最短的路之一:README 四个卖点全部能在文档和源码里对上号,月度发版节奏稳定(2026-09-30 刚发 v1.44.0),背后的 Silverhand Inc. 提供托管云与付费企业支持。

但它不是"Auth0 免费平替"这么简单——官方自托管方案有明确的付费分档(SAML 应用数量、IdP 发起的 SSO、隐藏品牌等属于 Pro/Enterprise 功能),也不支持 SCIM 这类企业身份生命周期协议。选型时值得把边界看清楚,再决定是否上车。

截至 2026-10-01,仓库 14,647 Stars、1,216 Forks,TypeScript 编写,MPL-2.0 协议,2021 年 6 月创建,头号贡献者 gao-sun(2,100+ 次提交),前后有五位千次提交级的维护者,不是单人项目。

README 的四个卖点,逐条对账

README 的自我定位是 “the modern, open-source auth infrastructure for SaaS and AI apps”,一句 “takes the pain out of OIDC and OAuth 2.1” 概括其价值主张。四个卖点值得逐条核实:

卖点(README 原话)落到实处
Multi-tenancy, enterprise SSO, RBAC: ready to use, no workaroundsOrganizations 模型(含组织角色、成员邀请、JIT provisioning)、SAML/OIDC 企业 SSO、租户级 + 组织级 RBAC,均可在 Console 配置
Pre-built sign-in flows, customizable UIs, SDKs for 30+ frameworks预置登录注册 UI(@logto/experience)、30 个官方框架接入指南、npm 上 14 个 JS 生态 SDK
Full support for OIDC, OAuth 2.1, and SAML三协议在官方文档与源码均有完整实现;注意 SAML 应用数量在自托管免费版受限(见后文)
Works out-of-the-box for Model Context Protocol and agent-based AI architectures官方维护四篇 AI 用例文档与远程 Logto MCP Server,v1.44.0 还给 ChatGPT / Codex 这类 MCP 客户端补了 refresh token 支持

容易误读的一点:Logto 的协议清单里没有 SCIM。企业 IT 常用 SCIM 做用户进出的自动同步,如果你的客户采购清单里点名要它,Logto 目前接不了,别被"协议齐全"的印象带过去。

架构实貌:一个 monorepo,一颗 Node 进程

仓库是 pnpm monorepo,packages/ 下 20 个包。核心几个:

包职责
@logto/core认证服务本体,基于 node-oidc-provider(v1.42.0 起升至 v9)实现 OIDC/OAuth,含 SAML、企业 SSO、MFA、Webhook
@logto/console管理控制台,管理员配置应用、连接器、角色
@logto/experience端用户看到的登录/注册界面,自带全部流程
@logto/connectors55 个身份连接器:Google、GitHub、微信、支付宝、飞书、钉钉、Twilio SMS、阿里云 SMS,以及通用 SAML / OIDC / OAuth2 接入
@logto/schemasPostgreSQL 表结构定义(tables/*.sql)
@logto/cli命令行工具,负责安装、升级与日常维护
@logto/elementsLit Web Components 组件集,README 自述"仍在开发、未发布到 npm"——如果你在别处看到把 elements 描述成"登录 UI 组件全家桶",那不是现状

运行时依赖两样东西:Node.js(engines 要求 ^22.14.0)和 PostgreSQL。本地起步一条命令:

curl -fsSL https://raw.githubusercontent.com/logto-io/logto/HEAD/docker-compose.yml | \
  docker compose -p logto -f - up

不想用 Docker 就 npm init @logto(要求自带 PostgreSQL),也有 Render 一键部署模板。启动后是一个进程同时服务管理控制台和登录页,没有外部消息队列或缓存中间件;官方生产部署文档建议加 Redis 做中央缓存(可选)。

“多租户"的准确含义

这里是最容易讲错的地方。Logto 语境里有两个不同层的"多租户”:

部署级多租户(一个 Logto 实例服务多个客户租户)是 Logto Cloud 的架构:每个租户一个专用 PostgreSQL 角色,数据隔离靠 PostgreSQL 行级安全(RLS)强制执行——源码 packages/core/src/tenants/utils.ts 的注释写得很直白:“In multi-tenancy mode, Logto should ALWAYS use a restricted user with RLS enforced to ensure data isolation between tenants”。租户凭据存在 tenants 表里,运行时按租户取 DSN 建独立连接池。自托管 OSS 默认跑两个内置租户(default 和 admin),不是让你一个实例开无数租户。

应用级多租户(你的 SaaS 服务多个企业客户)才是 OSS 用户直接用到的:Organizations 实体。每个 Organization 是一组用户加一套独立的组织角色和权限(organization template),成员邀请、组织级 M2M(machine-to-machine,机对机)应用、按邮箱域名自动分配角色的 JIT(just-in-time,即时)provisioning 都是现成的。官方文档明确说 Organization 就是为多租户应用提供隔离上下文设计的。

写方案文档时别把这两层混着说——“Logto 开箱支持多租户"指的是后者。

接入与 SDK:JS 生态一套 API,其他语言走标准协议

三条起步路径:Logto Cloud(零部署,开发租户免费);GitPod 一键拉起 OSS demo;本地 Docker Compose 或 npm init @logto。

SDK 的真实图景比"30+ 框架"四个字更值得细看:

  • JS/TS 生态是亲儿子。npm @logto scope 下有 12 个框架 SDK(React、Next.js、Vue、Nuxt、Angular、SvelteKit、Express、Remix、React Native、Capacitor、Chrome Extension 等),外加 @logto/node(服务端通用)、@logto/browser、@logto/js 三个基础库,框架 SDK 的核心 API 高度一致。
  • Python 有官方包(pip install logto),Go 有 github.com/logto-io/go。
  • Java Spring Boot、.NET、PHP、Ruby 等没有专用 SDK,官方指南教的是用 Spring Security OAuth2 Client 这类标准 OIDC 库接入——协议标准化之后并不难,但"一份 SDK 多端复用"的体验只在前两档成立。

也就是说,“30+ 框架"里一半是"官方 SDK”,另一半是"官方教程 + 标准协议库”。团队选型时按自己的技术栈对号入座即可。

AI Agent 与 MCP:2026 年的重点投入方向

README 把 MCP 放进四大卖点,官方文档里 AI 是一个独立的用例分区,给了三条接入路径:

  1. 给你的 MCP server 加认证:用官方 mcp-auth 库 + MCP SDK v2,Logto 作为授权服务器签发 JWT access token,MCP server 验证签名、issuer、audience 后放行。文档用 VS Code 做 MCP client 演示了完整流程。
  2. 让第三方 AI agent 访问你的 MCP server:第三方 agent 以 OAuth 第三方应用身份接入,用户会看到 consent 授权屏(授权同意页);开启 CIMD(Client ID Metadata Document,OAuth 客户端动态注册规范)动态客户端后,任何 agent 无需预先注册即可连接。
  3. 让第三方 AI agent 访问你现有的 API:同一套 consent 机制,agent 拿到的权限严格限于用户勾选的范围。

这套设计回应的是 AI 场景特有的问题:access token 的持有者不再是浏览器里的人,而是一个替用户取数据的程序,权限边界必须显式声明、用户可撤回。

Logto 自己也有一个远程 MCP Server(https://mcp.logto.io,Cloud 功能):把地址加进 Claude Code 或其他 MCP 客户端,用自然语言就能让 AI 检测你的项目框架、创建 Logto 应用并生成接入代码,官方口径支持 38+ 框架,还能直接问答 Logto 文档。

版本演进上,MCP 支持在持续加码:v1.44.0(2026-09-30)为 CIMD 动态应用补了 refresh token,ChatGPT、Codex 这类 MCP 客户端的用户不用再等 access token 过期就重新登录。

版本节奏与近期演进

发版极规律:每月末一个 minor,v1.32 到 v1.44 一路走过来。近三个月值得注意的:

  • v1.44.0:MFA 信任设备(完成 MFA 后可信任浏览器 1–365 天,默认 30);用户 ID 放宽到 128 字符且支持创建时自定义 id,从 Auth0 迁移时 auth0|abc123 这类旧 ID 可以原样保留;内置自托管验证码 Cap(Cloudflare Turnstile 不可达时的替代)。
  • v1.43.0:安全加固三连——Webhook 与企业 SSO 出网请求的 SSRF 防护(封内网与云元数据地址)、token exchange 强制校验 subject token 必须是真正的 access token(RFC 9068 at+jwt 头)、第三方应用被禁止改动用户账户数据。
  • v1.42.0:node-oidc-provider 升到 v9(撤销 opaque access token 连带撤销整个 grant);OIDC SSRF 防护默认开启,自托管用户如果回调地址在内网需显式关闭;邮箱访问规则(allowlist + 通配符)。

安全条目密集不是坏事——认证系统的修复日志本来就该长这样。对做企业客户的团队,v1.43 的 SSRF 防护和 v1.44 的迁移友好特性是两个实打实的加分项。

选型账本:和 Auth0 / Keycloak 摆在一起算

Logto 官方的对比页(数据口径 2026-07)给了几个可核实的数字,比泛泛的"更现代"有用:

  • 计费模型:Logto Cloud 按 token 计费,免费额度 5 万 MAU(monthly active users,月活跃用户),官方口号是"用户不登录就不收钱";Auth0 的企业 SSO 连接在自助 B2B 计划里只含 3–5 个,超出部分每个 $100/月、硬顶 30 个,M2M token 免费档每月 1,000 个。
  • 部署形态:官方对比表里 Auth0 标注 “Cloud only”,Logto 是 “Cloud / private cloud / self-hosted” 三选。
  • 迁移:Logto 支持直接导入 Bcrypt、Argon2、MD5、SHA 系、PBKDF2 密码哈希,用户首次登录时自动用 Argon2 重哈希,不用强制重置密码——从 Auth0 或老系统搬家时这是最大的减痛项。
  • Keycloak 没进官方对比页,但社区共识清楚:Java 系老牌方案,SPI(Service Provider Interface,扩展点机制)、主题、协议扩展体系极成熟,代价是部署运维和定制都需要专门人力。Logto 用 TypeScript 单进程 + PostgreSQL,运维面小得多;对应地,Keycloak 积累十年的社区生态和边缘场景覆盖仍是优势。
  • 官方也诚实列出了 Auth0 更合适的场景:复杂遗留集成、深度绑定 Okta 生态、规模稳定的纯 Cloud 采购。

自托管的付费边界,别踩空

“开源 = 自托管无功能阉割"这个印象需要修正。官方 self-hosted 计划分三档:

  • OSS Community:免费永久,完整认证授权能力、用户与应用数量不限、自助 MFA、自带 SMTP。官方承诺"免费功能永不锁定”。
  • Self-hosted Pro($199/月起,年付,上限 5 万 MAU):Console 协作者邀请与角色、租户级强制 MFA 策略、自定义登录 UI 资产(Bring your UI)、隐藏 “Powered by Logto”、IdP 发起的 SSO、SAML 应用最多 3 个。
  • Self-hosted Enterprise(合同定价):不限 SAML 应用、SLA、LTS 发布通道、内置邮件服务、自定义资源配额。

license 是一个签名文件,贴进 Console 立即生效、离线验证,不依赖厂商在线(源码 packages/core/src/license/ 有完整验签实现)。对白嫖党的影响主要是:免费版会显示 “Powered by Logto”,SAML 应用(作为服务提供方接企业客户)数量受限——B2B SaaS 起步阶段一个 SAML 应用通常够用,但规模化前要把 Pro 的钱算进成本。

适用与不适用

适合:

  • 多租户 SaaS 需要 Organization / RBAC / 企业 SSO 三件套,不想自己拼协议;
  • 产品涉及 AI Agent 调用受保护资源,需要 MCP 认证与 consent 流程;
  • 团队主力在 JS/TS 生态,想全栈一份 SDK 风格;
  • 预算敏感,需要"先免费跑起来,规模化后再付费解锁"的路径。

不适合:

  • 采购清单点名 SCIM 或其他企业身份生命周期协议的项目;
  • 需要白标(去掉 Logto 品牌)、大量 SAML 应用或 IdP 发起 SSO,又不愿付 Pro 费用的场景;
  • 团队已被 Keycloak 生态深度绑定、有专职 IAM 人力——切换的边际收益有限;
  • 只能提供 PostgreSQL + Node.js 之外运行时合规要求的环境。

小结

Logto 把"协议实现 + 端到端体验 + 管理界面"打包成一个开箱即用的整体,SDK 在 JS 生态内体验统一,MCP 与 AI Agent 支持是 2026 年明确的投入重点,月度发版里安全与迁移特性持续落地。它替代不了 Keycloak 十年积累的边缘场景,也绕不开自托管 Pro 分档的商业边界——但在"给新 SaaS 快速上一套体面的 auth"这个具体题目下,它是当下投入产出比最高的开源答案之一。上线前把 SCIM 缺位和 SAML 应用配额这两条放进采购评估清单,剩下的顾虑大多可以放下。

链接

  • 仓库:https://github.com/logto-io/logto
  • 文档:https://docs.logto.io
  • OpenAPI 浏览器:https://openapi.logto.io
  • Cloud:https://cloud.logto.io
  • 自托管计划:https://logto.io/self-hosted-plans
  • License:MPL-2.0

参与讨论

使用 GitHub 登录。欢迎补充事实、异议与实践。