Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento balíček poskytuje Azure Entra ID (dříve Azure Active Directory) autentizaci pro připojení PostgreSQL v JavaScriptu. Podporuje jak node-postgres (pg), tak klienty Sequelize .
Klíčové odkazy:
Začínáme
Aktuálně podporovaná prostředí
Další podrobnosti najdete v zásadách podpory.
Předpoklady
- Předplatné služby Azure.
- Server Azure Database for PostgreSQL konfigurovaný pro Entra ID autentizaci.
Nainstalujte balíček @azure/postgresql-auth.
Nainstalujte klientskou knihovnu Azure PostgreSQL Authentication pro JavaScript pomocí npm:
npm install @azure/postgresql-auth
Budete také muset nainstalovat @azure/identity pro podporu přihlašovacích údajů a preferovaného klienta PostgreSQL:
npm install @azure/identity pg
# or
npm install @azure/identity sequelize pg
Klíčové koncepty
Tato knihovna poskytuje dvě funkce pro integraci autentizace Entra ID s PostgreSQL:
-
entraTokenProvider— Vrací funkci poskytovatele hesel, která získá Entra ID přístupový token vhodný pro použití jako PostgreSQL heslo. Použijte to spg.Poolnebopg.Client. -
configureEntraAuthentication— ZaregistrujebeforeConnecthook na instanci Sequelize, která automaticky získá nový token a před každým novým připojením nastaví uživatelské jméno/heslo. -
GetEntraTokenPasswordOptions— Volitelně přepsat výchozí rozsah (vlastnost rozsahu) OAuth předaný entraTokenProvider. -
SequelizeBeforeConnectHook— Strukturální rozhraní přijaté configureEntraAuthentication; umožňuje použít jakýkoli objekt kompatibilní se Sequelize bez přidání tvrdé závislosti Sequelize.
Obě funkce přijímají Azure TokenCredential (z @azure/identity) a zpracovávají získávání tokenů v rámci Azure Database for PostgreSQL rozsahu.
Příklady
Použití s uzlem-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 },
});
Použití se 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();
Řešení problémů
Logování
Povolení protokolování může pomoct odhalit užitečné informace o chybách. Pokud chcete zobrazit protokol požadavků a odpovědí HTTP, nastavte proměnnou prostředí AZURE_LOG_LEVEL na info. Případně můžete protokolování povolit za běhu voláním setLogLevel v @azure/logger:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Podrobnější pokyny k povolení protokolů najdete v dokumentaci k @azure/protokolovacímu balíčku.
Další kroky
Podrobné příklady použití této knihovny najdete v adresáři ukázek .
Contributing
Pokud chcete přispívat do této knihovny, přečtěte si průvodce pro přispívání a přečtěte si další informace o tom, jak sestavit a otestovat kód.
Azure SDK for JavaScript