Menggunakan ID Microsoft Entra
Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)
Tujuan
Dimulai dengan versi 18.2.1, Driver Microsoft OLE DB untuk SQL Server memungkinkan aplikasi OLE DB tersambung ke Azure SQL Database atau Azure SQL Managed Instance menggunakan identitas gabungan . Metode autentikasi Microsoft Entra baru meliputi:
Nama pengguna dan kata sandi
Token akses
Autentikasi terintegrasi
Versi 18.3.0 menambahkan dukungan untuk metode autentikasi Microsoft Entra berikut:
Autentikasi interaktif
Autentikasi identitas terkelola (hanya dari dalam Azure Virtual Machine yang dikonfigurasi dengan Identitas Terkelola)
Versi 18.5.0 menambahkan dukungan untuk metode autentikasi berikut:
- Autentikasi perwakilan layanan Microsoft Entra
Catatan
Menggunakan mode autentikasi berikut dengan DataTypeCompatibility
(atau properti yang sesuai) diatur ke 80
tidak didukung:
- Autentikasi Microsoft Entra menggunakan nama pengguna dan kata sandi
- Autentikasi Microsoft Entra menggunakan token akses
- Autentikasi terintegrasi Microsoft Entra
- Autentikasi interaktif Microsoft Entra
- Autentikasi identitas terkelola Microsoft Entra
- Autentikasi perwakilan layanan Microsoft Entra
Untuk menggunakan autentikasi Microsoft Entra, Anda harus mengonfigurasi sumber data Azure SQL Anda. Untuk informasi selengkapnya, lihat Mengonfigurasi dan mengelola autentikasi Microsoft Entra dengan Azure SQL.
kata kunci dan properti string Koneksi ion
Kata kunci string koneksi berikut telah diperkenalkan untuk mendukung autentikasi Microsoft Entra:
kata kunci string Koneksi ion | Properti koneksi | Deskripsi |
---|---|---|
access_token | SSPROP_AUTH_ACCESS_TOKEN | Menentukan token akses untuk mengautentikasi ke ID Microsoft Entra. |
Autentikasi | SSPROP_AUTH_MODE | Menentukan metode autentikasi yang akan digunakan. |
Untuk informasi selengkapnya tentang kata kunci/properti baru, lihat halaman berikut ini:
- Menggunakan Kata Kunci String Koneksi ion dengan Driver OLE DB untuk SQL Server
- Properti Inisialisasi dan Otorisasi
Validasi enkripsi dan sertifikat
Lihat Enkripsi dan validasi sertifikat untuk informasi selengkapnya.
Penambahan GUI
Antarmuka pengguna grafis driver telah ditingkatkan untuk memungkinkan autentikasi Microsoft Entra. Untuk informasi selengkapnya, lihat:
Contoh string koneksi
Bagian ini memperlihatkan contoh kata kunci string koneksi baru dan yang sudah ada untuk digunakan dengan IDataInitialize::GetDataSource
properti dan DBPROP_INIT_PROVIDERSTRING
.
Autentikasi SQL
- Menggunakan
IDataInitialize::GetDataSource
:- Baru:
Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Authentication=SqlPassword; ID Pengguna=[nama pengguna]; Kata sandi=[kata sandi]; Gunakan Enkripsi untuk Data=Wajib
- Usang:
Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database]; ID Pengguna=[nama pengguna]; Kata sandi=[kata sandi]; Gunakan Enkripsi untuk Data=Wajib
- Baru:
- Menggunakan
DBPROP_INIT_PROVIDERSTRING
:- Baru:
Server=[server]; Database=[database];Authentication=SqlPassword; UID=[nama pengguna]; PWD=[kata sandi]; Enkripsi=Wajib
- Usang:
Server=[server]; Database=[database]; UID=[nama pengguna]; PWD=[kata sandi]; Enkripsi=Wajib
- Baru:
Autentikasi Windows terintegrasi menggunakan Antarmuka Penyedia Dukungan Keamanan (SSPI)
- Menggunakan
IDataInitialize::GetDataSource
:- Baru:
Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Authentication=ActiveDirectoryIntegrated; Gunakan Enkripsi untuk Data=Wajib
- Usang:
Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Integrated Security=SSPI; Gunakan Enkripsi untuk Data=Wajib
- Baru:
- Menggunakan
DBPROP_INIT_PROVIDERSTRING
:- Baru:
Server=[server]; Database=[database];Authentication=ActiveDirectoryIntegrated; Enkripsi=Wajib
- Usang:
Server=[server]; Database=[database];Trusted_Koneksi ion=ya; Enkripsi=Wajib
- Baru:
Autentikasi nama pengguna dan kata sandi Microsoft Entra
- Menggunakan
IDataInitialize::GetDataSource
:Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Authentication=ActiveDirectoryPassword; ID Pengguna=[nama pengguna]; Kata sandi=[kata sandi]; Gunakan Enkripsi untuk Data=Wajib
- Menggunakan
DBPROP_INIT_PROVIDERSTRING
:Server=[server]; Database=[database];Authentication=ActiveDirectoryPassword; UID=[nama pengguna]; PWD=[kata sandi]; Enkripsi=Wajib
Autentikasi terintegrasi Microsoft Entra
- Menggunakan
IDataInitialize::GetDataSource
:Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Authentication=ActiveDirectoryIntegrated; Gunakan Enkripsi untuk Data=Wajib
- Menggunakan
DBPROP_INIT_PROVIDERSTRING
:Server=[server]; Database=[database];Authentication=ActiveDirectoryIntegrated; Enkripsi=Wajib
Autentikasi Microsoft Entra menggunakan token akses
- Menggunakan
IDataInitialize::GetDataSource
:Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Token Akses=[token akses]; Gunakan Enkripsi untuk Data=Wajib
- Menggunakan
DBPROP_INIT_PROVIDERSTRING
:Menyediakan token akses melalui
DBPROP_INIT_PROVIDERSTRING
tidak didukung
Autentikasi interaktif Microsoft Entra
- Menggunakan
IDataInitialize::GetDataSource
:Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Authentication=ActiveDirectoryInteractive; ID Pengguna=[nama pengguna]; Gunakan Enkripsi untuk Data=Wajib
- Menggunakan
DBPROP_INIT_PROVIDERSTRING
:Server=[server]; Database=[database];Authentication=ActiveDirectoryInteractive; UID=[nama pengguna]; Enkripsi=Wajib
Autentikasi identitas terkelola Microsoft Entra
- Menggunakan
IDataInitialize::GetDataSource
:- Identitas terkelola yang ditetapkan pengguna:
Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Authentication=ActiveDirectoryMSI; ID Pengguna=[ID Objek]; Gunakan Enkripsi untuk Data=Wajib
- Identitas terkelola yang ditetapkan sistem:
Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Authentication=ActiveDirectoryMSI; Gunakan Enkripsi untuk Data=Wajib
- Identitas terkelola yang ditetapkan pengguna:
- Menggunakan
DBPROP_INIT_PROVIDERSTRING
:- Identitas terkelola yang ditetapkan pengguna:
Server=[server]; Database=[database];Authentication=ActiveDirectoryMSI; UID=[ID Objek]; Enkripsi=Wajib
- Identitas terkelola yang ditetapkan sistem:
Server=[server]; Database=[database];Authentication=ActiveDirectoryMSI; Enkripsi=Wajib
- Identitas terkelola yang ditetapkan pengguna:
Autentikasi perwakilan layanan Microsoft Entra
- Menggunakan
IDataInitialize::GetDataSource
:Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Authentication=ActiveDirectoryServicePrincipal; ID Pengguna=[ID Aplikasi (klien)]; Password=[Rahasia aplikasi (klien)]; Gunakan Enkripsi untuk Data=Wajib
- Menggunakan
DBPROP_INIT_PROVIDERSTRING
:Server=[server]; Database=[database];Authentication=ActiveDirectoryServicePrincipal; UID=[ID Aplikasi (klien) ]; PWD=[Rahasia aplikasi (klien)]; Enkripsi=Wajib
Sampel kode
Sampel berikut menunjukkan kode yang diperlukan untuk menyambungkan ke ID Microsoft Entra dengan kata kunci koneksi.
access_token
#include <string>
#include <iostream>
#include <msdasc.h>
int main()
{
wchar_t azureServer[] = L"server";
wchar_t azureDatabase[] = L"mydatabase";
wchar_t accessToken[] = L"eyJ0eXAiOi...";
IDBInitialize *pIDBInitialize = nullptr;
IDataInitialize* pIDataInitialize = nullptr;
HRESULT hr = S_OK;
CoInitialize(nullptr);
// Construct the connection string.
std::wstring connString = L"Provider=MSOLEDBSQL19;Data Source=" + std::wstring(azureServer) + L";Initial Catalog=" +
std::wstring(azureDatabase) + L";Access Token=" + accessToken + L";Use Encryption for Data=Mandatory;";
hr = CoCreateInstance(CLSID_MSDAINITIALIZE, nullptr, CLSCTX_INPROC_SERVER,
IID_IDataInitialize, reinterpret_cast<LPVOID*>(&pIDataInitialize));
if (FAILED(hr))
{
std::cout << "Failed to create an IDataInitialize instance." << std::endl;
goto Cleanup;
}
hr = pIDataInitialize->GetDataSource(nullptr, CLSCTX_INPROC_SERVER, connString.c_str(),
IID_IDBInitialize, reinterpret_cast<IUnknown**>(&pIDBInitialize));
if (FAILED(hr))
{
std::cout << "Failed to get data source object." << std::endl;
goto Cleanup;
}
hr = pIDBInitialize->Initialize();
if (FAILED(hr))
{
std::cout << "Failed to establish connection." << std::endl;
goto Cleanup;
}
Cleanup:
if (pIDBInitialize)
{
pIDBInitialize->Uninitialize();
pIDBInitialize->Release();
}
if (pIDataInitialize)
{
pIDataInitialize->Release();
}
CoUninitialize();
}
Direktori Aktif Terintegrasi
#include <string>
#include <iostream>
#include <msdasc.h>
int main()
{
wchar_t azureServer[] = L"server";
wchar_t azureDatabase[] = L"mydatabase";
IDBInitialize *pIDBInitialize = nullptr;
IDataInitialize* pIDataInitialize = nullptr;
HRESULT hr = S_OK;
CoInitialize(nullptr);
// Construct the connection string.
std::wstring connString = L"Provider=MSOLEDBSQL19;Data Source=" + std::wstring(azureServer) + L";Initial Catalog=" +
std::wstring(azureDatabase) + L";Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory;";
hr = CoCreateInstance(CLSID_MSDAINITIALIZE, nullptr, CLSCTX_INPROC_SERVER,
IID_IDataInitialize, reinterpret_cast<LPVOID*>(&pIDataInitialize));
if (FAILED(hr))
{
std::cout << "Failed to create an IDataInitialize instance." << std::endl;
goto Cleanup;
}
hr = pIDataInitialize->GetDataSource(nullptr, CLSCTX_INPROC_SERVER, connString.c_str(),
IID_IDBInitialize, reinterpret_cast<IUnknown**>(&pIDBInitialize));
if (FAILED(hr))
{
std::cout << "Failed to get data source object." << std::endl;
goto Cleanup;
}
hr = pIDBInitialize->Initialize();
if (FAILED(hr))
{
std::cout << "Failed to establish connection." << std::endl;
goto Cleanup;
}
Cleanup:
if (pIDBInitialize)
{
pIDBInitialize->Uninitialize();
pIDBInitialize->Release();
}
if (pIDataInitialize)
{
pIDataInitialize->Release();
}
CoUninitialize();
}
Langkah berikutnya
Otorisasi akses ke aplikasi web Microsoft Entra menggunakan alur pemberian kode OAuth 2.0.
Pelajari tentang autentikasi Microsoft Entra ke SQL Server.
Konfigurasikan koneksi driver menggunakan kata kunci string koneksi yang didukung driver OLE DB.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk