Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Microsoft Fabric
Avsikt
Från och med version 18.2.1 tillåter Microsoft OLE DB-drivrutin för SQL Server OLE DB-program att ansluta till Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics och Microsoft Fabric med hjälp av en federerad identitet.
Microsoft Entra-autentiseringsmetoder inkluderar:
- Användarnamn och lösenord
- Åtkomsttoken
- Integrerad autentisering
Version 18.3.0 lägger till stöd för följande Microsoft Entra-autentiseringsmetoder:
Interaktiv autentisering
Hanterad identitetsautentisering (endast inifrån en virtuell Azure-dator som konfigurerats med hanterad identitet)
Version 18.5.0 lägger till stöd för följande autentiseringsmetod:
- Microsoft Entra-tjänstens huvudnamnsautentisering
Anmärkning
Det går DataTypeCompatibility att använda följande autentiseringslägen med 80 (eller motsvarande egenskap) inställda på:
- Microsoft Entra-autentisering med användarnamn och lösenord
- Microsoft Entra-autentisering med hjälp av åtkomsttoken
- Microsoft Entra-integrerad autentisering
- Interaktiv Microsoft Entra-autentisering
- Microsoft Entra-hanterad identitetsautentisering
- Microsoft Entra-tjänstens huvudnamnsautentisering
Om du vill använda Microsoft Entra-autentisering måste du konfigurera din Azure SQL-datakälla. Mer information finns i Konfigurera och hantera Microsoft Entra-autentisering med Azure SQL.
Nyckelord och egenskaper för anslutningssträngar
Följande nyckelord för anslutningssträngar har införts för att stödja Microsoft Entra-autentisering:
| Nyckelord för anslutningssträng | Anslutningsegenskap | Description |
|---|---|---|
| Åtkomsttoken | SSPROP_AUTH_ACCESS_TOKEN |
Anger en åtkomsttoken som ska autentiseras mot Microsoft Entra-ID. |
| Authentication | SSPROP_AUTH_MODE |
Anger den autentiseringsmetod som ska användas. |
Mer information om de nya nyckelorden/egenskaperna finns på följande sidor:
- Använda nyckelord för anslutningssträng med OLE DB-drivrutin för SQL Server
- Initierings- och auktoriseringsegenskaper
Kryptering och certifikatverifiering
Mer information finns i Kryptering och certifikatverifiering .
GUI-tillägg
Det grafiska användargränssnittet för drivrutinen har förbättrats för att tillåta Microsoft Entra-autentisering. Mer information finns i:
Exempel på anslutningssträngar
Det här avsnittet visar exempel på nya och befintliga nyckelord för anslutningssträngar som ska användas med IDataInitialize::GetDataSource och DBPROP_INIT_PROVIDERSTRING egenskap.
SQL-autentisering
- Användning av
IDataInitialize::GetDataSource:- Ny:
Provider=MSOLEDBSQL19; Datakälla=[server]; Initial Catalog=[database]; Authentication=SqlPassword; Användar-ID=[användarnamn]; Password=[password]; Använda kryptering för data=obligatoriskt
- Avrådd:
Provider=MSOLEDBSQL19; Datakälla=[server]; Initial Catalog=[database]; Användar-ID=[användarnamn]; Password=[password]; Använda kryptering för data=obligatoriskt
- Ny:
- Användning av
DBPROP_INIT_PROVIDERSTRING:- Ny:
Server=[server]; Database=[database]; Authentication=SqlPassword; UID=[användarnamn]; PWD=[lösenord]; Encrypt=Mandatory
- Avrådd:
Server=[server]; Database=[database]; UID=[användarnamn]; PWD=[lösenord]; Encrypt=Mandatory
- Ny:
Integrerad Windows-autentisering med hjälp av SSPI (Security Support Provider Interface)
- Användning av
IDataInitialize::GetDataSource:- Ny:
Provider=MSOLEDBSQL19; Datakälla=[server]; Initial Catalog=[database]; Authentication=ActiveDirectoryIntegrated; Använda kryptering för data=obligatoriskt
- Avrådd:
Provider=MSOLEDBSQL19; Datakälla=[server]; Initial Catalog=[database]; Integrated Security=SSPI; Använda kryptering för data=obligatoriskt
- Ny:
- Användning av
DBPROP_INIT_PROVIDERSTRING:- Ny:
Server=[server]; Database=[database]; Authentication=ActiveDirectoryIntegrated; Encrypt=Mandatory
- Avrådd:
Server=[server]; Database=[database]; Trusted_Connection=ja; Encrypt=Mandatory
- Ny:
Microsoft Entra-autentisering med användarnamn och lösenord
Anmärkning
Alternativet ActiveDirectoryPassword-autentisering (Microsoft Entra ID-lösenordsautentisering) är inaktuellt.
Microsoft Entra-ID-lösenordet baseras på OAuth 2.0 Resource Owner Password Credentials (ROPC), som gör att ett program kan logga in användaren genom att direkt hantera sitt lösenord.
Microsoft rekommenderar att du inte använder ROPC-flödet. den är inte kompatibel med multifaktorautentisering (MFA). I de flesta scenarier är säkrare alternativ tillgängliga och rekommenderas. Det här flödet kräver en hög grad av förtroende för programmet och medför risker som inte finns i andra flöden. Du bör bara använda det här flödet när säkrare flöden inte är livskraftiga. Microsoft flyttar från det här högriskautentiseringsflödet för att skydda användare från skadliga attacker. Mer information finns i Planera för obligatorisk multifaktorautentisering för Azure.
När användarkontexten är tillgänglig använder du ActiveDirectoryInteractive-autentisering.
När användarkontexten inte är tillgänglig och appen körs i Azure-infrastrukturen använder du ActiveDirectoryMSI (eller ActiveDirectoryManagedIdentity i vissa drivrutiner). Hanterad identitet eliminerar kostnaderna för att underhålla och rotera hemligheter och certifikat. Om du inte kan använda hanterad identitet använder du ActiveDirectoryServicePrincipal-autentisering.
Varning
Använd inte autentisering med tjänstens huvudnamn när en användarkontext är tillgänglig. Endast appåtkomst har i sig hög privilegienivå, vilket ofta ger åtkomst över hela hyresgästen och potentiellt tillåter en dålig aktör att komma åt kunddata för vilken användare som helst.
- Användning av
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Datakälla=[server]; Initial Catalog=[database]; Authentication=ActiveDirectoryPassword; Användar-ID=[användarnamn]; Password=[password]; Använda kryptering för data=obligatoriskt
- Användning av
DBPROP_INIT_PROVIDERSTRING:Server=[server]; Database=[database]; Authentication=ActiveDirectoryPassword; UID=[användarnamn]; PWD=[lösenord]; Encrypt=Mandatory
Microsoft Entra-integrerad autentisering
- Användning av
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Datakälla=[server]; Initial Catalog=[database]; Authentication=ActiveDirectoryIntegrated; Använda kryptering för data=obligatoriskt
- Användning av
DBPROP_INIT_PROVIDERSTRING:Server=[server]; Database=[database]; Authentication=ActiveDirectoryIntegrated; Encrypt=Mandatory
Microsoft Entra-autentisering med hjälp av en åtkomsttoken
- Användning av
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Datakälla=[server]; Initial Catalog=[database]; Åtkomsttoken=[åtkomsttoken]; Använda kryptering för data=obligatoriskt
- Användning av
DBPROP_INIT_PROVIDERSTRING:Det går inte att tillhandahålla åtkomsttoken via
DBPROP_INIT_PROVIDERSTRING
Interaktiv Microsoft Entra-autentisering
- Användning av
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Datakälla=[server]; Initial Catalog=[database]; Authentication=ActiveDirectoryInteractive; Användar-ID=[användarnamn]; Använda kryptering för data=obligatoriskt
- Användning av
DBPROP_INIT_PROVIDERSTRING:Server=[server]; Database=[database]; Authentication=ActiveDirectoryInteractive; UID=[användarnamn]; Encrypt=Mandatory
Microsoft Entra-hanterad identitetsautentisering
- Användning av
IDataInitialize::GetDataSource:- Användartilldelad hanterad identitet:
Provider=MSOLEDBSQL19; Datakälla=[server]; Initial Catalog=[database]; Authentication=ActiveDirectoryMSI; Användar-ID=[Objekt-ID]; Använda kryptering för data=obligatoriskt
- Systemtilldelad hanterad identitet:
Provider=MSOLEDBSQL19; Datakälla=[server]; Initial Catalog=[database]; Authentication=ActiveDirectoryMSI; Använda kryptering för data=obligatoriskt
- Användartilldelad hanterad identitet:
- Användning av
DBPROP_INIT_PROVIDERSTRING:- Användartilldelad hanterad identitet:
Server=[server]; Database=[database]; Authentication=ActiveDirectoryMSI; UID=[Objekt-ID]; Encrypt=Mandatory
- Systemtilldelad hanterad identitet:
Server=[server]; Database=[database]; Authentication=ActiveDirectoryMSI; Encrypt=Mandatory
- Användartilldelad hanterad identitet:
Microsoft Entra-tjänstens huvudnamnsautentisering
- Användning av
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Datakälla=[server]; Initial Catalog=[database]; Authentication=ActiveDirectoryServicePrincipal; User ID=[Application (client) ID]; Password=[Application (client) secret]; Använda kryptering för data=obligatoriskt
- Användning av
DBPROP_INIT_PROVIDERSTRING:Server=[server]; Database=[database]; Authentication=ActiveDirectoryServicePrincipal; UID=[Applikation (klient) ID]; PWD=[Applikation (klient) hemlighet]; Encrypt=Obligatoriskt
Kodexempel
Följande exempel visar den kod som krävs för att ansluta till Microsoft Entra-ID med anslutningsnyckelord.
Åtkomsttoken
#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();
}
Active Directory integrerad
#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();
}
Relaterat innehåll
Auktorisera åtkomst till Microsoft Entra-webbprogram med hjälp av OAuth 2.0-kodbidragsflödet.
Läs mer om Microsoft Entra-autentisering till SQL Server.
Konfigurera drivrutinsanslutningar med hjälp av nyckelord för anslutningssträngar som OLE DB-drivrutinen stöder.