Клиентская библиотека аутентификации Azure PostgreSQL для JavaScript — версия 1.0.0-beta.1

Этот пакет обеспечивает Azure Entra ID (ранее Azure Active Directory) аутентификацию для подключений PostgreSQL в JavaScript. Поддерживается как node-postgres (pg), так и Sequelize клиенты.

Ключевые ссылки:

Начало работы

Поддерживаемые в настоящее время среды

Чтобы получить дополнительные сведения, ознакомьтесь с нашей политикой поддержки.

Предпосылки

Установите пакет @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 — Возвращает функцию провайдера паролей, которая получает токен доступа Entra ID, подходящий для использования в качестве пароля PostgreSQL. Используйте это с pg.Pool или pg.Client.
  • configureEntraAuthentication — Регистрирует beforeConnect крючок на экземпляре Sequelize, который автоматически получает новый токен и устанавливает имя пользователя/пароль перед каждым новым соединением.
  • GetEntraTokenPasswordOptions — Опционально переопределить стандартную область действия OAuth (свойство области), переданное entraTokenProvider.
  • SequelizeBeforeConnectHook — Структурный интерфейс, принятый configureEntraAuthentication; позволяет использовать любой объект, совместимый с Sequelize, без добавления жёсткой зависимости от Sequelise.

Обе функции принимают Azure TokenCredential (от @azure/identity) и обрабатывают приобретение токенов по База данных Azure для PostgreSQL области.

Примеры

Использование с узлом-постгресом (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();

Troubleshooting

Лесозаготовка

Включение ведения журнала может помочь выявить полезные сведения о сбоях. Чтобы просмотреть журнал HTTP-запросов и ответов, задайте для переменной среды AZURE_LOG_LEVEL значение info. В альтернативном порядке, логирование можно включить во время выполнения, вызвав setLogLevel в @azure/logger:

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

setLogLevel("info");

Дополнительные инструкции по включению журналов см. в документации по пакету @azure/loger.

Дальнейшие действия

Ознакомьтесь с примерами каталога, чтобы получить подробные примеры использования этой библиотеки.

Contributing

Если вы хотите внести вклад в эту библиотеку, пожалуйста, ознакомьтесь с руководством contributing guide чтобы узнать больше о том, как создавать и тестировать код.