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

Tento balíček poskytuje Azure Entra ID (dříve Azure Active Directory) autentizaci pro připojení PostgreSQL v JavaScriptu. Podporuje jak node-postgres (pg), tak klienty Sequelize .

Klíčové odkazy:

Začínáme

Aktuálně podporovaná prostředí

Další podrobnosti najdete v zásadách podpory.

Předpoklady

Nainstalujte balíček @azure/postgresql-auth.

Nainstalujte klientskou knihovnu Azure PostgreSQL Authentication pro JavaScript pomocí npm:

npm install @azure/postgresql-auth

Budete také muset nainstalovat @azure/identity pro podporu přihlašovacích údajů a preferovaného klienta PostgreSQL:

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

Klíčové koncepty

Tato knihovna poskytuje dvě funkce pro integraci autentizace Entra ID s PostgreSQL:

  • entraTokenProvider — Vrací funkci poskytovatele hesel, která získá Entra ID přístupový token vhodný pro použití jako PostgreSQL heslo. Použijte to s pg.Pool nebo pg.Client.
  • configureEntraAuthentication — Zaregistruje beforeConnect hook na instanci Sequelize, která automaticky získá nový token a před každým novým připojením nastaví uživatelské jméno/heslo.
  • GetEntraTokenPasswordOptions — Volitelně přepsat výchozí rozsah (vlastnost rozsahu) OAuth předaný entraTokenProvider.
  • SequelizeBeforeConnectHook — Strukturální rozhraní přijaté configureEntraAuthentication; umožňuje použít jakýkoli objekt kompatibilní se Sequelize bez přidání tvrdé závislosti Sequelize.

Obě funkce přijímají Azure TokenCredential (z @azure/identity) a zpracovávají získávání tokenů v rámci Azure Database for PostgreSQL rozsahu.

Příklady

Použití s uzlem-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 },
});

Použití se 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();

Řešení problémů

Logování

Povolení protokolování může pomoct odhalit užitečné informace o chybách. Pokud chcete zobrazit protokol požadavků a odpovědí HTTP, nastavte proměnnou prostředí AZURE_LOG_LEVEL na info. Případně můžete protokolování povolit za běhu voláním setLogLevel v @azure/logger:

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

setLogLevel("info");

Podrobnější pokyny k povolení protokolů najdete v dokumentaci k @azure/protokolovacímu balíčku.

Další kroky

Podrobné příklady použití této knihovny najdete v adresáři ukázek .

Contributing

Pokud chcete přispívat do této knihovny, přečtěte si průvodce pro přispívání a přečtěte si další informace o tom, jak sestavit a otestovat kód.