@dbx-tools/auth-gate

中文文档
0.9.206发布于 2026/11/11Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 7926

在Better Auth、电子邮件 OTP和密码上创建的无密码认证运行时间

中文使用文档
文档目录5 节
  1. 创建直接的无密码运行时间
  2. 选择直接或隧道集成
  3. 配置存储
  4. 使用兼容路线
  5. 理解认证限制

@dbx-工具/自动门

用更好的 Auth 创建平台中立的无密码运行时间, 电子邮件 一次性密码、密码、呼叫人提供的身份政策以及持续性 存储.

对于公共地道后面的 Databricks App, 请使用高级 authGate() 插件从 @dbx-tools/tunnel数字 :

import { server } from "@databricks/appkit";
import { appkit } from "@dbx-tools/appkit";
import { email } from "@dbx-tools/email";
import { authGate, tunnelInterceptor } from "@dbx-tools/tunnel";

await appkit.createApp({
  plugins: [server(), email(), authGate({ allow: ["example.com"] })],
  interceptor: tunnelInterceptor(),
});

此构成门只请求配置的公共隧道主机 . Databricks Apps 前门和本地开发主机继续使用 应用程序身份 .

创建直接的无密码运行时间

当您拥有 HTTP 路由、 身份政策 时直接使用此软件包 代码传送 :

import { auth, authStorage, type AuthEmailOptions } from "@dbx-tools/auth-gate";

async function deliverCode(email: string, code: string, options: AuthEmailOptions): Promise<void> {
  const endpoint = process.env.CODE_DELIVERY_URL;
  if (!endpoint) {
    throw new Error("CODE_DELIVERY_URL is required");
  }
  const response = await fetch(endpoint, {
    method: "POST",
    headers: { "content-type": "application/json" },
    body: JSON.stringify({ email, code, ...options }),
  });
  if (!response.ok) {
    throw new Error(`Code delivery failed with status ${response.status}`);
  }
}

const database = await authStorage.createAuthStorage({ storage: "sqlite" });
const secret = process.env.AUTH_SECRET;
if (!secret) {
  throw new Error("AUTH_SECRET is required");
}

const runtime = await auth.createPasswordlessAuth({
  storage: database,
  baseURL: "http://localhost:8000",
  trustedOrigins: ["https://overlay.example.com"],
  appName: "My app",
  passkeyNamePrefix: "My Company",
  secret,
  logoutRedirectPath: "/",
  sessionTtlSeconds: 2_592_000,
  codeTtlSeconds: 600,
  maxAttempts: 5,
  authorizeIdentity: (email) => email.endsWith("@example.com"),
  sendCode: (email, code, options) => deliverCode(email, code, options),
});

挂载 runtime.handler(request) 下级 runtime.basePath,默认为 /api/auth启用 runtime.session(headers) 当应用程序需要时 已核实的电子邮件地址 。 打电话 runtime.close() 服务器关机时,请 存储适配器可以释放其资源.

选择直接或隧道集成

对通过 Databricks 输入的流量使用 AppKit 执行上下文 Apps前门。 前门提供平台身份 并且可以提供 半个字.

使用 @dbx-tools/tunnel 当 AppKit 应用程序也有公共 Portr 或 FRP出入口. 内容 authGate() 插件 :

  • 按配置的隧道流量进行分类 Host 头曰.
  • 在 AppKit 服务器上挂载登录和兼容路线 .
  • 离开站台前门站及地道通车.
  • 通过注册发送代码 @dbx-tools/email 插件 .
  • 删除未信任的转发身份和符号头 .
  • 输入已验证的隧道电子邮件作为请求身份 .

使用 @dbx-tools/auth-gate 直接用于另一个 HTTP 堆栈或路径 不需要隧道的分类 直接运行时间不挂载 AppKit 中间软件,前方身份头,或发射地道.

密码或电子邮件编码会话仅证明配置的身份 。 这个 不薄荷 数据砖在半个标志.

配置存储

更好的Auth存储用户、会话、检察官办公室、费率限制和密码。 存储罐 使用 AppKit Lakebase 池或本地 SQLite :

import { authStorage } from "@dbx-tools/auth-gate";

const sqlite = await authStorage.createAuthStorage({
  storage: "sqlite",
  sqlitePath: "./data/auth.sqlite",
});

storage: "auto" 除非您请求 SQLite ,否则您会使用一个提供Lakebase 池。 若为 SQLite 不可用自动模式, 运行时使用内存 适配器. 明确 storage: "sqlite" 设置失败而不是选择 记忆。 内部用户、检察官办公室、会话和密码在 进程退出.

在 Lakebase 或 a 的 PostgreSQL 咨询锁定下运行更好的 Auth 迁移 sQLite 的文件锁定.

使用兼容路线

POST <basePath>/logout 返回时 { ok, redirectTo }。 。 。 . GET 清除相同的 会话和有状态的重定向 303。重定向默认值为 / 已经 限于同源路径。 更好的 Auth 仅接受 baseURL 财务报告和审定财务报表 trustedOrigins拒绝任意请求来源或引用者。 内部a 数据砖 App, HTTPS *.databricksapps.com 来源自动被接受 为站台正门. WebAuthn 仍然使用配置 baseURL 东道主 其RPID和预期来源.

GET <basePath>/status 返回已核实的会话状态。 检察官办公室发送 校验使用 Better Auth 的本地电子邮件 OTP 路由 路径.

理解认证限制

  • authorizeIdentity 运行普通小写电子邮件地址。 一个 未经授权的代码请求不能显示地址是否被允许.
  • 运行时间存储 OTP 值作为散列并限制代码尝试和请求 价格通过Better Auth.
  • baseURL 确定安全的- cookie 行为, WebAuthn 依赖 party ID, 和预期的密码来源。 依赖方的ID是确切的主机名, 所以兄弟会的隧道主机使用 单独的密码。 配置外部浏览器 来源,而不是生产中的私人回回地址.
  • passkeyNamePrefix 控制在 WebAuthn 显示名 。 默认为 appName。 。 。 .
  • passkeys: false 禁用 WebAuthn 路由并广告电子邮件 OTP 是唯一的 登录方法。 密码默认启用 .
  • trustedOrigins 扩展已接受的浏览器来源。 任意 Origin 财务报告和审定财务报表 Referer 价值观被拒绝.
  • 运行时间是认证边界, 不是 Databricks 授权 客户端。 下游 Databricks 的通话仍然需要 AppKit 或其他证书 来源.

版本与发布记录

@dbx-tools/auth-gate 共发布 170 个版本,首次发布于 2026/09/05;过去 12 个月发布了 170 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.9.206latest2026/11/11今天
0.9.2052026/11/111 天前
0.9.2032026/11/074 天前
0.9.2022026/11/065 天前
0.9.2012026/11/056 天前
0.9.2002026/11/056 天前

关于 @dbx-tools/auth-gate 的常见问题

@dbx-tools/auth-gate 是什么?

在Better Auth、电子邮件 OTP和密码上创建的无密码认证运行时间

如何安装 @dbx-tools/auth-gate?

在项目目录运行 npm install @dbx-tools/auth-gate,或使用 pnpm add / yarn add / bun add。

@dbx-tools/auth-gate 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@dbx-tools/auth-gate 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@dbx-tools/auth-gate 可以商用吗?

@dbx-tools/auth-gate 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@dbx-tools/auth-gate 的下载量有多少?

根据 npm 官方下载统计,@dbx-tools/auth-gate 在 2026/10/12 – 2026/11/10 这 30 天内被下载 7,926 次,日均约 264 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@dbx-tools/auth-gate 还在维护吗?

最新版本 0.9.206 发布于 2026/11/11(今天);至今共发布 170 个版本,其中过去 12 个月发布了 170 个;首次发布于 2026/09/05。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。