Azure PostgreSQL Authentication client library for JavaScript - version 1.0.0

Dieses Paket bietet Azure Entra ID (früher Azure Active Directory) Authentifizierung für PostgreSQL-Verbindungen in JavaScript. Es unterstützt sowohl Node-Postgres (pg) als auch Sequelize-Clients .

Wichtige Links:

Erste Schritte

Derzeit unterstützte Umgebungen

Weitere Informationen finden Sie in unserer Supportrichtlinie.

Prerequisites

Installieren Sie das @azure/postgresql-auth-Paket

Installieren Sie die Azure PostgreSQL Authentication Client-Bibliothek für JavaScript mit npm:

npm install @azure/postgresql-auth

Sie müssen außerdem für die Unterstützung der Zugangsdaten und Ihren bevorzugten PostgreSQL-Client installieren @azure/identity :

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

Wichtige Konzepte

Diese Bibliothek bietet zwei Funktionen zur Integration der Entra ID-Authentifizierung mit PostgreSQL:

  • entraTokenProvider — Gibt eine Passwortanbieterfunktion zurück, die ein Entra ID Zugriffstoken erwirbt, das als PostgreSQL-Passwort verwendet werden kann. Verwenden Sie dies mit pg.Pool oder pg.Client.
  • configureEntraAuthentication — Registriert einen beforeConnect Hook auf einer Sequelize-Instanz, der automatisch ein frisches Token erwirbt und vor jeder neuen Verbindung Benutzername/Passwort einlegt.
  • GetEntraTokenPasswordOptions — Optional überschreiben Sie den Standard-OAuth-Scope (Scope-Eigenschaft), der an entraTokenProvider weitergegeben wird.
  • SequelizeBeforeConnectHook — Strukturelle Schnittstelle akzeptiert von configureEntraAuthentication; erlaubt es dir, jedes Sequelize-kompatible Objekt zu verwenden, ohne eine feste Sequelize-Abhängigkeit hinzuzufügen.

Beide Funktionen akzeptieren ein Azure TokenCredential (aus @azure/identity) und verwalten die Token-Erfassung gegen den Azure Database for PostgreSQL Scope.

Examples

Verwendung mit 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 },
});

Verwendung mit 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();

Problembehandlung

Protokollierung

Das Aktivieren der Protokollierung kann hilfreiche Informationen zu Fehlern aufdecken. Um ein Protokoll von HTTP-Anforderungen und -Antworten anzuzeigen, legen Sie die AZURE_LOG_LEVEL Umgebungsvariable auf infofest. Alternativ kann die Protokollierung zur Laufzeit durch Aufrufen von setLogLevel im @azure/loggeraktiviert werden:

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

setLogLevel("info");

Ausführlichere Anweisungen zum Aktivieren von Protokollen finden Sie in den @azure/Logger-Paketdokumenten.

Nächste Schritte

Ausführliche Beispiele zur Verwendung dieser Bibliothek finden Sie in den Beispielen Verzeichnis.

Contributing

Wenn Sie zu dieser Bibliothek beitragen möchten, lesen Sie bitte den beitragenden Leitfaden, um mehr darüber zu erfahren, wie man den Code erstellt und testet.