Usare Microsoft Entra ID
Si applica a:SQL Serverdatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)
Scopo
A partire dalla versione 18.2.1, Microsoft OLE DB Driver per SQL Server consente alle applicazioni OLE DB di connettersi a un'istanza gestita di SQL di Azure usando un'identità federata. I nuovi metodi di autenticazione di 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();
}
Passaggi successivi
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.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per