你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
该软件包为 JavaScript 中的 PostgreSQL 连接提供Azure Entra ID(前称Azure Active Directory)认证。 它支持 节点-postgres(pg) 和 Sequelize 客户端。
关键链接:
入门
当前支持的环境
有关更多详细信息,请参阅 我们的支持策略 。
先决条件
- Azure 订阅。
- 一台配置为Entra ID认证的Azure Database for PostgreSQL服务器。
安装 @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.Pool或pg.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
如果你想为本库贡献内容,请阅读 贡献指南,了解更多关于如何构建和测试代码的信息。