Usare Microsoft Entra ID
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW) Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric
Scopo
A partire dalla versione 18.2.1, Microsoft OLE DB Driver per SQL Server consente alle applicazioni OLE DB di connettersi al database SQL di Azure, a un'istanza gestita di SQL di Azure, a Azure Synapse Analytics e a Microsoft Fabric usando un'identità federata.
I metodi di autenticazione Microsoft Entra includono:
- Nome utente e password
- Token di accesso
- Autenticazione integrata
La versione 18.3.0 aggiunge il supporto dei seguenti metodi di autenticazione per Microsoft Entra:
Autenticazione interattiva
Autenticazione dell'identità gestita (solo dall'interno di una macchina virtuale di Azure configurata con identità gestita)
La versione 18.5.0 aggiunge il supporto dei metodi di autenticazione seguenti:
- Autenticazione dell’entità servizio di Microsoft Entra
Nota
L'uso delle modalità di autenticazione seguenti con DataTypeCompatibility
(o la proprietà corrispondente) impostata su 80
non è supportato:
- Autenticazione Microsoft Entra con nome utente e password
- Autenticazione Microsoft Entra ID con token di accesso
- Autenticazione integrata di Microsoft Entra
- Autenticazione interattiva di Microsoft Entra
- Autenticazione delle identità gestite di Microsoft Entra
- Autenticazione dell’entità servizio di Microsoft Entra
Per usare l'autenticazione di Microsoft Entra, è necessario configurare l'origine dati Azure SQL. Per altre informazioni, vedere Configurare e gestire l'autenticazione di Microsoft Entra con Azure SQL.
Parole chiave e proprietà delle stringhe di connessione
Per supportare l'autenticazione di Microsoft Entra Directory sono state introdotte le seguenti parole chiave della stringa di connessione:
Parola chiave stringa di connessione | Proprietà di connessione | Descrizione |
---|---|---|
Token di accesso | SSPROP_AUTH_ACCESS_TOKEN |
Specifica un token di accesso per l'autenticazione in Microsoft Entra ID. |
Autenticazione | SSPROP_AUTH_MODE |
Specifica il metodo di autenticazione da usare. |
Per altre informazioni sulle nuove parole chiave/proprietà, vedere le pagine seguenti:
- Utilizzo delle parole chiave delle stringhe di connessione con driver OLE DB per SQL Server
- Proprietà di inizializzazione e di autorizzazione
Crittografia e convalida di certificati
Per altre informazioni, vedere Crittografia e convalida di certificati.
Aggiunte all'interfaccia utente grafica
L'interfaccia utente grafica del driver è stata migliorata per consentire l'autenticazione di Microsoft Entra. Per altre informazioni, vedi:
Esempi di stringhe di connessione
In questa sezione vengono illustrati esempi di parole chiave della stringa di connessione nuove ed esistenti da usare con la proprietà IDataInitialize::GetDataSource
e DBPROP_INIT_PROVIDERSTRING
.
Autenticazione SQL
- Usando:
IDataInitialize::GetDataSource
- Nuovo:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=SqlPassword;User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- Deprecato:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- Nuovo:
- Usando:
DBPROP_INIT_PROVIDERSTRING
- Nuovo:
Server=[server];Database=[database];Authentication=SqlPassword;UID=[username];PWD=[password];Encrypt=Mandatory
- Deprecato:
Server=[server];Database=[database];UID=[username];PWD=[password];Encrypt=Mandatory
- Nuovo:
Autenticazione integrata di Windows tramite Security Support Provider Interface (SSPI)
- Usando:
IDataInitialize::GetDataSource
- Nuovo:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory
- Deprecato:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Integrated Security=SSPI;Use Encryption for Data=Mandatory
- Nuovo:
- Usando:
DBPROP_INIT_PROVIDERSTRING
- Nuovo:
Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
- Deprecato:
Server=[server];Database=[database];Trusted_Connection=yes;Encrypt=Mandatory
- Nuovo:
Autenticazione con nome utente e password di Microsoft Entra
- Usando:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryPassword;User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- Usando:
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryPassword;UID=[username];PWD=[password];Encrypt=Mandatory
Autenticazione integrata di Microsoft Entra
- Usando:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory
- Usando:
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
Autenticazione con token di accesso di Microsoft Entra
- Usando:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Access Token=[access token];Use Encryption for Data=Mandatory
- Usando:
DBPROP_INIT_PROVIDERSTRING
L'invio del token di accesso tramite
DBPROP_INIT_PROVIDERSTRING
non è supportato
Autenticazione interattiva di Microsoft Entra
- Usando:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryInteractive;User ID=[username];Use Encryption for Data=Mandatory
- Usando:
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryInteractive;UID=[username];Encrypt=Mandatory
Autenticazione dell’identità gestita di Microsoft Entra
- Usando:
IDataInitialize::GetDataSource
- Identità gestita assegnata dall'utente:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryMSI;User ID=[Object ID];Use Encryption for Data=Mandatory
- Identità gestita assegnata dal sistema:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryMSI;Use Encryption for Data=Mandatory
- Identità gestita assegnata dall'utente:
- Usando:
DBPROP_INIT_PROVIDERSTRING
- Identità gestita assegnata dall'utente:
Server=[server];Database=[database];Authentication=ActiveDirectoryMSI;UID=[Object ID];Encrypt=Mandatory
- Identità gestita assegnata dal sistema:
Server=[server];Database=[database];Authentication=ActiveDirectoryMSI;Encrypt=Mandatory
- Identità gestita assegnata dall'utente:
Autenticazione dell’entità servizio di Microsoft Entra
- Usando:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryServicePrincipal;User ID=[Application (client) ID];Password=[Application (client) secret];Use Encryption for Data=Mandatory
- Usando:
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryServicePrincipal;UID=[Application (client) ID];PWD=[Application (client) secret];Encrypt=Mandatory
Esempi di codice
L'esempio seguente mostra il codice necessario per connettersi a Microsoft Entra ID con le parole chiave di connessione.
Token di accesso
#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();
}
Integrato in Active Directory
#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();
}
Contenuto correlato
Informazioni sull'autenticazione di Microsoft Entra in SQL Server.
Configurare le connessioni driver usando le parole chiave della stringa di connessione supportate dal driver OLE DB.