Pustaka klien Autentikasi Azure PostgreSQL untuk JavaScript - versi 1.0.0-beta.1

Paket ini menyediakan autentikasi Azure Entra ID (sebelumnya Azure Active Directory) untuk koneksi PostgreSQL di JavaScript. Ini mendukung klien node-postgres (pg) dan Sequelize .

Tautan kunci:

Memulai Langkah Pertama

Lingkungan yang didukung saat ini

Lihat kebijakan dukungan kami untuk detail selengkapnya.

Prasyarat

Pasang paket @azure/postgresql-auth

Instal pustaka klien Autentikasi PostgreSQL Azure untuk JavaScript dengan npm:

npm install @azure/postgresql-auth

Anda juga perlu menginstal @azure/identity untuk dukungan kredensial dan klien PostgreSQL pilihan Anda:

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

Konsep Utama

Pustaka ini menyediakan dua fungsi untuk mengintegrasikan otentikasi Entra ID dengan PostgreSQL:

  • entraTokenProvider — Mengembalikan fungsi penyedia kata sandi yang memperoleh token akses Entra ID yang cocok untuk digunakan sebagai kata sandi PostgreSQL. Gunakan ini dengan pg.Pool atau pg.Client.
  • configureEntraAuthentication — Mendaftarkan beforeConnect hook pada instance Sequelize yang secara otomatis memperoleh token baru dan mengatur nama pengguna/kata sandi sebelum setiap koneksi baru.
  • GetEntraTokenPasswordOptions — Secara opsional mengganti cakupan OAuth default (properti cakupan) yang diteruskan ke entraTokenProvider.
  • SequelizeBeforeConnectHook — Antarmuka struktural diterima oleh configureEntraAuthentication; memungkinkan Anda menggunakan objek apa pun yang kompatibel dengan Sequelize tanpa menambahkan dependensi sekuel keras.

Kedua fungsi menerima Azure TokenCredential (dari @azure/identity) dan menangani akuisisi token terhadap cakupan Azure Database for PostgreSQL.

Examples

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

Menggunakan dengan 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

Penebangan kayu

Mengaktifkan pengelogan dapat membantu menemukan informasi yang berguna tentang kegagalan. Untuk melihat log permintaan dan respons HTTP, atur variabel lingkungan AZURE_LOG_LEVEL ke info. Atau, pengelogan dapat diaktifkan saat runtime dengan memanggil setLogLevel di @azure/logger:

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

setLogLevel("info");

Untuk instruksi lebih rinci tentang cara mengaktifkan log, Anda dapat melihat dokumen paket @azure/logger.

Langkah berikutnya

Silakan lihat sampel direktori untuk contoh terperinci tentang cara menggunakan pustaka ini.

Contributing

Jika Anda ingin berkontribusi ke library ini, silakan baca panduan contributor untuk mempelajari lebih lanjut cara membuat dan menguji kode.