Azure PostgreSQL Authentication client library for JavaScript - versie 1.0.0

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.

Examples

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

Logging

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 voorbeelden map voor gedetailleerde voorbeelden over het gebruik van deze bibliotheek.

Contributing

Als je wilt bijdragen aan deze bibliotheek, lees dan de bijdragende gids om meer te weten te komen over hoe je de code bouwt en test.