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

Detta paket erbjuder Azure Entra ID (tidigare Azure Active Directory) autentisering för PostgreSQL-anslutningar i JavaScript. Den stöder både node-postgres (pg) och Sequelize-klienter .

Nyckellänkar:

Komma igång

Miljöer som stöds för närvarande

Mer information finns i vår supportprincip .

Prerequisites

Installera @azure/postgresql-auth-paketet

Installera Azure PostgreSQL Authentication-klientbiblioteket för JavaScript med npm:

npm install @azure/postgresql-auth

Du behöver också installera @azure/identity för legitimationsstöd och din föredragna PostgreSQL-klient:

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

Viktiga begrepp

Detta bibliotek erbjuder två funktioner för att integrera Entra ID-autentisering med PostgreSQL:

  • entraTokenProvider — Returnerar en lösenordsleverantörsfunktion som skaffar en Entra ID åtkomsttoken lämplig för användning som PostgreSQL-lösenord. Använd detta med pg.Pool eller pg.Client.
  • configureEntraAuthentication — Registrerar en beforeConnect hook på en Sequelize-instans som automatiskt skaffar en ny token och sätter användarnamn/lösenord före varje ny anslutning.
  • GetEntraTokenPasswordOptions — Kan du eventuellt åsidosätta standard-OAuth-scope (scope-egenskapen) som skickas till entraTokenProvider.
  • SequelizeBeforeConnectHook — Strukturellt gränssnitt accepterat av configureEntraAuthentication; låter dig använda vilket Sequelize-kompatibelt objekt som helst utan att lägga till ett hårt sequelize-beroende.

Båda funktionerna accepterar en Azure TokenCredential (från @azure/identity) och hanterar tokeninsamling mot Azure Database for PostgreSQL scope.

Exempel

Använder med 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 },
});

Användning med 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

Loggning

Aktivering av loggning kan hjälpa dig att hitta användbar information om fel. Om du vill se en logg med HTTP-begäranden och svar anger du AZURE_LOG_LEVEL miljövariabeln till info. Du kan också aktivera loggning vid körning genom att anropa setLogLevel i @azure/logger:

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

setLogLevel("info");

Mer detaljerade anvisningar om hur du aktiverar loggar finns i dokument för @azure/logger-paket.

Nästa steg

Ta en titt på exempelkatalogen för detaljerade exempel på hur du använder det här biblioteket.

Contributing

Om du vill bidra till det här biblioteket kan du läsa bidragsguiden för att lära dig mer om hur du skapar och testar koden.