Biblioteca cliente de autenticación Azure PostgreSQL para JavaScript - versión 1.0.0-beta.1

Este paquete proporciona autenticación Azure Entra ID (anteriormente Azure Active Directory) para conexiones PostgreSQL en JavaScript. Soporta tanto node-postgres (pg) como clientes Sequelize .

Vínculos clave:

Cómo empezar

Entornos admitidos actualmente

Consulte nuestra de directiva de soporte técnico de para obtener más información.

Prerequisites

Instalación del paquete @azure/postgresql-auth

Instala la biblioteca cliente de autenticación Azure PostgreSQL para JavaScript con npm:

npm install @azure/postgresql-auth

También necesitarás instalar @azure/identity para soporte de credenciales y tu cliente preferido de PostgreSQL:

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

Conceptos clave

Esta biblioteca ofrece dos funciones para integrar la autenticación de Entra ID con PostgreSQL:

  • entraTokenProvider — Devuelve una función de proveedor de contraseñas que adquiere un token de acceso Entra ID adecuado para usarse como contraseña de PostgreSQL. Úsalo con pg.Pool o pg.Client.
  • configureEntraAuthentication — Registra un beforeConnect gancho en una instancia de Sequelize que adquiere automáticamente un token nuevo y establece el nombre de usuario/contraseña antes de cada nueva conexión.
  • GetEntraTokenPasswordOptions — Opcionalmente anular el alcance OAuth por defecto (propiedad de alcance) pasado a entraTokenProvider.
  • SequelizeBeforeConnectHook — Interfaz estructural aceptada por configureEntraAuthentication; te permite usar cualquier objeto compatible con Sequelize sin añadir una dependencia estricta de Sequelize.

Ambas funciones aceptan un Azure TokenCredential (de @azure/identity) y gestionan la adquisición de tokens en función del alcance Azure Database for PostgreSQL.

Ejemplos

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

Usando con Secuela

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

Solución de problemas

Registro

Habilitar el registro puede ayudar a descubrir información útil sobre errores. Para ver un registro de solicitudes y respuestas HTTP, establezca la variable de entorno AZURE_LOG_LEVEL en info. Como alternativa, el registro se puede habilitar en tiempo de ejecución llamando a setLogLevel en el @azure/logger:

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

setLogLevel("info");

Para obtener instrucciones más detalladas sobre cómo habilitar los registros, puede consultar los documentos del paquete de @azure/registrador.

Pasos siguientes

Eche un vistazo al directorio de ejemplos para obtener ejemplos detallados sobre cómo usar esta biblioteca.

Contributing

Si desea contribuir a esta biblioteca, lea la guía de contribución de para obtener más información sobre cómo compilar y probar el código.