Azure PostgreSQL Authentication client libreria per JavaScript - versione 1.0.0-beta.1

Questo pacchetto fornisce autenticazione Azure Entra ID (precedentemente Azure Active Directory) per le connessioni PostgreSQL in JavaScript. Supporta sia i client node-postgres (pg) che quelli Sequelize .

Collegamenti chiave:

Come iniziare

Ambienti attualmente supportati

Consulta la nostra politica support per maggiori dettagli.

Prerequisiti

Installare il pacchetto @azure/postgresql-auth

Installa la libreria client Azure PostgreSQL Authentication per JavaScript con npm:

npm install @azure/postgresql-auth

Dovrai anche installare @azure/identity per il supporto alle credenziali e per il tuo client PostgreSQL preferito:

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

Concetti chiave

Questa libreria fornisce due funzioni per integrare l'autenticazione Entra ID con PostgreSQL:

  • entraTokenProvider — Restituisce una funzione di fornimento di password che acquisisce un token di accesso Entra ID adatto all'uso come password PostgreSQL. Usa questo con pg.Pool o pg.Client.
  • configureEntraAuthentication — Registra un beforeConnect hook su un'istanza Sequelize che acquisisce automaticamente un token nuovo e imposta il nome utente/password prima di ogni nuova connessione.
  • GetEntraTokenPasswordOptions — Opzionalmente sovrascrivere l'ambito OAuth predefinito (proprietà di scopo) passato a entraTokenProvider.
  • SequelizeBeforeConnectHook — Interfaccia strutturale accettata da configureEntraAuthentication; ti permette di usare qualsiasi oggetto compatibile con Sequelize senza aggiungere una dipendenza rigida di Sequelize.

Entrambe le funzioni accettano un Azure TokenCredential (da @azure/identity) e gestiscono l'acquisizione dei token rispetto all'ambito Database di Azure per PostgreSQL.

Examples

Uso con nodo-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 },
});

Uso con 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

Registrazione

L'abilitazione della registrazione può aiutare a individuare informazioni utili sugli errori. Per visualizzare un log di richieste e risposte HTTP, impostare la variabile di ambiente AZURE_LOG_LEVEL su info. In alternativa, la registrazione può essere abilitata in tempo reale chiamando setLogLevel nel @azure/logger:

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

setLogLevel("info");

Per istruzioni più dettagliate su come abilitare i log, è possibile esaminare la documentazione del pacchetto @azure/logger.

Passaggi successivi

Per esempi dettagliati su come usare questa libreria, vedere gli esempi di directory.

Contributing

Se desideri contribuire a questa libreria, leggi la guida contributi per saperne di più su come costruire e testare il codice.