Azure PostgreSQL Authentication Library client pour JavaScript - version 1.0.0-beta.1

Ce paquet fournit une authentification Azure Entra ID (anciennement Azure Active Directory) pour les connexions PostgreSQL en JavaScript. Il prend en charge à la fois les clients node-postgres (pg) et Sequelize .

Liens clés :

Premiers pas

Environnements actuellement pris en charge

Pour plus d’informations, consultez notre de stratégie de support .

Prerequisites

Installer le package @azure/postgresql-auth

Installez la bibliothèque client Azure PostgreSQL Authentication pour JavaScript avec npm :

npm install @azure/postgresql-auth

Vous devrez également installer @azure/identity pour le support des identifiants et votre client PostgreSQL préféré :

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

Concepts clés

Cette bibliothèque offre deux fonctions pour intégrer l’authentification Entra ID avec PostgreSQL :

  • entraTokenProvider — Renvoie une fonction de fournisseur de mot de passe qui acquiert un jeton d’accès Entra ID adapté à l’utilisation comme mot de passe PostgreSQL. Utilisez ceci avec pg.Pool ou pg.Client.
  • configureEntraAuthentication — Enregistre un beforeConnect hook sur une instance Sequelize qui acquiert automatiquement un jeton neuf et définit le nom d’utilisateur/mot de passe avant chaque nouvelle connexion.
  • GetEntraTokenPasswordOptions — Éventuellement passer outre la portée OAuth par défaut (propriété de portée) passée à entraTokenProvider.
  • SequelizeBeforeConnectHook — Interface structurelle acceptée par configureEntraAuthentication ; vous permet d’utiliser n’importe quel objet compatible Sequelize sans ajouter une dépendance stricte à Sequelize.

Les deux fonctions acceptent un Azure TokenCredential (de @azure/identity) et gèrent l’acquisition de jetons selon le scope Azure Database pour PostgreSQL.

Exemples

Utiliser avec 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 },
});

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

Résolution des problèmes

Exploitation forestière

L’activation de la journalisation peut vous aider à découvrir des informations utiles sur les échecs. Pour afficher un journal des requêtes et réponses HTTP, définissez la variable d’environnement AZURE_LOG_LEVEL sur info. Vous pouvez également activer la journalisation au moment de l’exécution en appelant setLogLevel dans la @azure/logger:

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

setLogLevel("info");

Pour obtenir des instructions plus détaillées sur l’activation des journaux, vous pouvez consulter la documentationdu package @azure/enregistreur d’événements.

Étapes suivantes

Consultez les exemples répertoire pour obtenir des exemples détaillés sur l’utilisation de cette bibliothèque.

Contribution

Si vous souhaitez contribuer à cette bibliothèque, lisez le guide de contribution pour en savoir plus sur la génération et le test du code.