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

Pakiet ten zapewnia uwierzytelnianie Azure Entra ID (dawniej Azure Active Directory) dla połączeń PostgreSQL w języku JavaScript. Obsługuje zarówno node-postgres (pg), jak i klientów Sequelize .

Kluczowe linki:

Rozpoczęcie pracy

Obecnie obsługiwane środowiska

  • Wersje LTS systemu Node.js

Aby uzyskać więcej informacji, zobacz nasze zasady pomocy technicznej .

Prerequisites

Instalowanie pakietu @azure/postgresql-auth

Zainstaluj bibliotekę klienta uwierzytelniania PostgreSQL Azure dla JavaScript z npm:

npm install @azure/postgresql-auth

Będziesz też musiał zainstalować @azure/identity wsparcie dla uwierzytelniania oraz preferowanego klienta PostgreSQL:

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

Kluczowe pojęcia

Ta biblioteka oferuje dwie funkcje integracji uwierzytelniania Entra ID z PostgreSQL:

  • entraTokenProvider — Zwraca funkcję dostawcy haseł, która pozyskuje token dostępu Entra ID odpowiedni do użycia jako hasło PostgreSQL. Użyj tego z pg.Pool lub pg.Client.
  • configureEntraAuthentication — Rejestruje beforeConnect hak na instancji Sequelize, która automatycznie przejmuje nowy token i ustawia nazwę użytkownika/hasło przed każdym nowym połączeniem.
  • GetEntraTokenPasswordOptions — Opcjonalnie nadpisz domyślny zakres OAuth (właściwość zakresu) przekazany do entraTokenProvider.
  • SequelizeBeforeConnectHook — Interfejs strukturalny akceptowany przez configureEntraAuthentication; pozwala używać dowolnego obiektu kompatybilnego z Sequelize bez dodawania twardej zależności Sequelize.

Obie funkcje akceptują Azure TokenCredential (od @azure/identity) i obsługują pozyskiwanie tokenów względem zakresu Azure Database for PostgreSQL.

Przykłady

Używając z węzłem-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 },
});

Użycie z 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

Przemysł drzewny

Włączenie rejestrowania może pomóc odkryć przydatne informacje o błędach. Aby wyświetlić dziennik żądań i odpowiedzi HTTP, ustaw zmienną środowiskową AZURE_LOG_LEVEL na info. Alternatywnie rejestrowanie można włączyć w czasie wykonywania, wywołując setLogLevel w @azure/logger:

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

setLogLevel("info");

Aby uzyskać bardziej szczegółowe instrukcje dotyczące włączania dzienników, zapoznaj się z dokumentacją pakietu @azure/logger.

Następne kroki

Zapoznaj się z przykładami katalogu, aby zapoznać się ze szczegółowymi przykładami dotyczącymi korzystania z tej biblioteki.

Contributing

Jeśli chcesz współtworzyć tę bibliotekę, przeczytaj przewodnik dotyczący współtworzenia , aby dowiedzieć się więcej na temat tworzenia i testowania kodu.