Azure PostgreSQL Authentication Client Library für JavaScript - Version 1.0.0-beta.1

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 Details finden Sie in unserer Supportrichtlinie .

Voraussetzungen

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

Troubleshooting

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 im Beispielverzeichnis .

Contributing

Wenn Sie an dieser Bibliothek mitwirken möchten, lesen Sie bitte den Beitragsleitfaden , um mehr über das Erstellen und Testen des Codes zu erfahren.