Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu paket, JavaScript'teki PostgreSQL bağlantıları için Azure Entra ID (eski Azure Active Directory) kimlik doğrulama sağlar. Hem node-postgres (pg) hem de Sequelize istemcilerini destekler.
Önemli bağlantılar:
Başlangıç Yapmak
Şu anda desteklenen ortamlar
Daha fazla ayrıntı için destek ilkemize bakın.
Prerequisites
- Bir Azure aboneliği.
- PostgreSQL için Azure Veri Tabanı sunucusu Entra ID kimlik doğrulama için yapılandırılmıştır.
@azure/postgresql-auth paketini yükleme
JavaScript için Azure PostgreSQL Authentication istemci kütüphanesini npm ile kurun:
npm install @azure/postgresql-auth
Ayrıca, kimlik doğrulama desteği ve tercih ettiğiniz PostgreSQL istemcisi için kurulum @azure/identity yapmanız gerekecek:
npm install @azure/identity pg
# or
npm install @azure/identity sequelize pg
Temel kavramlar
Bu kütüphane, Entra ID doğrulamasını PostgreSQL ile entegre etmek için iki işlev sağlar:
-
entraTokenProvider— PostgreSQL şifresi olarak kullanılmaya uygun bir Entra ID erişim tokenı edinen bir şifre sağlayıcı fonksiyonu döndürür. Bunu veyapg.Poolpg.Clientile kullanın. -
configureEntraAuthentication— Sequelize örneğinde otomatik olarak yeni bir token elde eden ve her yeni bağlantıdan önce kullanıcı adı/şifresini belirleyen birbeforeConnectkanca kaydeder. -
GetEntraTokenPasswordOptions— EntraTokenProvider'a iletilen varsayılan OAuth kapsamını (kapsam özelliği) isteğe bağlı olarak geçersiz kılın. -
SequelizeBeforeConnectHook— Yapısal arayüz configureEntraAuthentication tarafından kabul edilir; Herhangi bir Sequelize uyumlu nesneyi kullanarak sert sequelize bağımlılığı eklemenizi sağlar.
Her iki fonksiyon da Azure TokenCredential (@azure/identity'den) kabul eder ve token edinimini PostgreSQL için Azure Veri Tabanı kapsamına karşı yönetir.
Örnekler
Node-postgres (pg) ile kullanım
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 },
});
Sequelize ile kullanım
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
Ağaç kesimi
Loglamayı etkinleştirmek, hatalarla ilgili yararlı bilgilerin ortaya çıkmasına yardımcı olabilir. HTTP isteklerinin ve yanıtlarının günlüğünü görmek için ortam değişkenini AZURE_LOG_LEVEL olarak infoayarlayın. Alternatif olarak, çalışma zamanında setLogLevel@azure/logger çağrılarak günlük tutma etkinleştirilebilir.
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Günlükleri etkinleştirme hakkında daha ayrıntılı yönergeler için @azure/günlükçü paketi belgelerine bakabilirsiniz.
Sonraki Adımlar
Bu kitaplığın nasıl kullanılacağına ilişkin ayrıntılı örnekler için lütfen samples dizinine göz atın.
Contributing
Bu kitaplığa katkıda bulunmak isterseniz kodu oluşturma ve test etme hakkında daha fazla bilgi edinmek için lütfen katkıda bulunma kılavuzunu okuyun.
Azure SDK for JavaScript