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

Dit pakket biedt Azure Entra ID (voorheen Azure Active Directory) authenticatie voor PostgreSQL-verbindingen in JavaScript. Het ondersteunt zowel node-postgres (pg) als Sequelize-clients .

Sleutelkoppelingen:

Aan de slag

Momenteel ondersteunde omgevingen

Zie ons ondersteuningsbeleid voor meer informatie.

Prerequisites

Het @azure/postgresql-auth-pakket installeren

Installeer de Azure PostgreSQL Authentication clientbibliotheek voor JavaScript met npm:

npm install @azure/postgresql-auth

Je moet het ook installeren @azure/identity voor credentialondersteuning en je favoriete PostgreSQL-client:

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

belangrijke concepten

Deze bibliotheek biedt twee functies voor het integreren van Entra ID-authenticatie met PostgreSQL:

  • entraTokenProvider — Geeft een wachtwoordproviderfunctie terug die een Entra ID toegangstoken verwerft dat geschikt is voor gebruik als PostgreSQL-wachtwoord. Gebruik dit met pg.Pool of pg.Client.
  • configureEntraAuthentication — Registreert een beforeConnect hook op een Sequelize-instantie die automatisch een nieuw token verwerft en de gebruikersnaam/wachtwoord voor elke nieuwe verbinding instelt.
  • GetEntraTokenPasswordOptions — Overschrijf optioneel de standaard OAuth-scope (scope-eigenschap) die aan entraTokenProvider wordt doorgegeven.
  • SequelizeBeforeConnectHook — Structurele interface geaccepteerd door configureEntraAuthentication; laat je elk Sequelize-compatibel object gebruiken zonder een harde sequelize-afhankelijkheid toe te voegen.

Beide functies accepteren een Azure TokenCredential (van @azure/identity) en behandelen tokenverwerving tegen de Azure Database for PostgreSQL scope.

Voorbeelden

Met node-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 },
});

Gebruik met 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

Logboekregistratie

Het inschakelen van logboekregistratie kan helpen nuttige informatie over fouten te ontdekken. Als u een logboek met HTTP-aanvragen en -antwoorden wilt zien, stelt u de omgevingsvariabele AZURE_LOG_LEVEL in op info. U kunt logboekregistratie ook tijdens runtime inschakelen door setLogLevel aan te roepen in de @azure/logger:

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

setLogLevel("info");

Voor meer gedetailleerde instructies over het inschakelen van logboeken, kunt u de @azure/logger pakketdocumentenbekijken.

Volgende stappen 

Bekijk de map met voorbeelden voor gedetailleerde voorbeelden over het gebruik van deze bibliotheek.

Contributing

Als u een bijdrage wilt leveren aan deze bibliotheek, leest u de gids voor bijdragen voor meer informatie over het bouwen en testen van de code.