你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure PostgreSQL Authentication client library for JavaScript - version 1.0.0-beta.1

该软件包为 JavaScript 中的 PostgreSQL 连接提供Azure Entra ID(前称Azure Active Directory)认证。 它支持 节点-postgres(pgSequelize 客户端。

关键链接:

入门

当前支持的环境

有关更多详细信息,请参阅 我们的支持策略

先决条件

安装 @azure/postgresql-auth

安装Azure PostgreSQL 认证客户端库,适用于 JavaScript,npm

npm install @azure/postgresql-auth

你还需要安装 @azure/identity 凭证支持和你偏好的PostgreSQL客户端:

npm install @azure/identity pg
# or
npm install @azure/identity sequelize pg

重要概念

该库提供两个功能,用于将 Entra ID 认证与 PostgreSQL 集成:

  • entraTokenProvider — 返回密码提供者函数,获取适合用作PostgreSQL密码的Entra ID访问令牌。 使用该词与 pg.Poolpg.Client
  • configureEntraAuthentication — 在 Sequelize 实例上注册 beforeConnect 一个钩子,自动获取新令牌并在每次新连接前设置用户名/密码。
  • GetEntraTokenPasswordOptions — 可选地覆盖传递给 entraTokenProvider 的默认 OAuth 作用域(范围属性)。
  • SequelizeBeforeConnectHook — 结构接口被 configureEntraAuthentication 接受;允许你使用任何兼容 Sequelize 的对象,而无需添加硬的 Sequelize 依赖。

这两个函数都接受Azure TokenCredential(来自@azure/identity),并处理对Azure Database for PostgreSQL范围的令牌获取。

示例

使用节点postgres(pg

import { DefaultAzureCredential } from "@azure/identity";

const { entraTokenProvider } = await import("@azure/postgresql-auth");
const pg = await import("pg");
const credential = new DefaultAzureCredential();
const pool = new pg.Pool({
  host: process.env.PGHOST,
  port: Number(process.env.PGPORT || 5432),
  database: process.env.PGDATABASE,
  user: process.env.PGUSER,
  password: entraTokenProvider(credential),
  ssl: { rejectUnauthorized: true },
});

与Sequelize一起使用

import { DefaultAzureCredential } from "@azure/identity";

const { configureEntraAuthentication } = await import("@azure/postgresql-auth");
const { Sequelize } = await import("sequelize");
const sequelize = new Sequelize({
  dialect: "postgres",
  host: process.env.PGHOST,
  port: Number(process.env.PGPORT || 5432),
  database: process.env.PGDATABASE,
});
const credential = new DefaultAzureCredential();
configureEntraAuthentication(sequelize, credential);
await sequelize.authenticate();

故障排除

伐木业

启用日志记录可能有助于发现有关故障的有用信息。 若要查看 HTTP 请求和响应的日志,请将 AZURE_LOG_LEVEL 环境变量设置为 info。 或者,可以通过在 setLogLevel中调用 @azure/logger 在运行时启用日志记录:

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

有关如何启用日志的更详细说明,可以查看 @azure/记录器包文档

后续步骤

请查看 示例 目录,获取有关如何使用此库的详细示例。

Contributing

如果你想为本库贡献内容,请阅读 贡献指南,了解更多关于如何构建和测试代码的信息。