Utiliser Microsoft Entra ID
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric
Objectif
À partir de la version 18.2.1, Microsoft OLE DB Driver pour SQL Server permet aux applications OLE DB de se connecter à une base de données Azure SQL, Azure SQL Managed Instance, Azure Synapse Analytics et Microsoft Fabric à l’aide d’une identité fédérée.
Les méthodes d'authentification Microsoft Entra sont les suivantes :
- Nom d’utilisateur et mot de passe
- Access token (Jeton d’accès)
- Authentification intégrée
La version 18.3.0 ajoute la prise en charge des méthodes d’authentification Microsoft Entra suivantes :
Authentification interactive
Authentification par identité managée (uniquement à partir d’une machine virtuelle Azure configurée avec une identité managée)
La version 18.5.0 ajoute le support des méthodes d’authentification suivantes :
- Authentification avec principal de service Microsoft Entra
Remarque
L’utilisation des modes d’authentification suivants avec la DataTypeCompatibility
(ou la propriété correspondante) définie sur 80
n’est pas prise en charge :
- Authentification Microsoft Entra à l’aide du nom d’utilisateur et du mot de passe.
- Authentification Microsoft Entra à l’aide d’un jeton d’accès
- Authentification intégrée Microsoft Entra
- Authentification interactive Microsoft Entra
- Authentification par identités managées Microsoft Entra
- Authentification avec principal de service Microsoft Entra
Pour utiliser l’authentification Microsoft Entra, vous devez configurer votre source de données Azure SQL. Pour plus d’informations, consultez Configurer et gérer l’authentification Microsoft Entra avec Azure SQL.
Mots clés et propriétés de chaîne de connexion
Les mots clés de chaîne de connexion suivants ont été introduits pour prendre en charge l’authentification Microsoft Entra :
Mot clé de chaîne de connexion | Propriété de connexion | Description |
---|---|---|
Jeton d'accès | SSPROP_AUTH_ACCESS_TOKEN |
Spécifie un jeton d’accès pour s’authentifier auprès de Microsoft Entra ID. |
Authentification | SSPROP_AUTH_MODE |
Spécifie la méthode d’authentification à utiliser. |
Pour plus d’informations sur les nouveaux mots clés/propriétés, consultez les pages suivantes :
- Utilisation de mots clés de chaîne de connexion avec OLE DB Driver pour SQL Server
- Propriétés d’initialisation et d’autorisation
Chiffrement et validation de certificat
Pour plus d’informations, consultez Chiffrement et validation des certificats.
Ajouts d’interface graphique utilisateur
L’interface graphique utilisateur du pilote a été améliorée pour permettre l’authentification Microsoft Entra. Pour plus d’informations, consultez l’article suivant :
Exemples de chaîne de connexion
Cette section présente des exemples de mots clés de chaîne de connexion nouveaux et existants à utiliser avec IDataInitialize::GetDataSource
et la propriété DBPROP_INIT_PROVIDERSTRING
.
Authentification SQL
- Utilisation :
IDataInitialize::GetDataSource
- Nouveau :
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=SqlPassword;User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- Dépréciation :
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- Nouveau :
- Utilisation :
DBPROP_INIT_PROVIDERSTRING
- Nouveau :
Server=[server];Database=[database];Authentication=SqlPassword;UID=[username];PWD=[password];Encrypt=Mandatory
- Dépréciation :
Server=[server];Database=[database];UID=[username];PWD=[password];Encrypt=Mandatory
- Nouveau :
Authentification Windows intégrée à l’aide de l’interface SSPI (Security Support Provider Interface)
- Utilisation :
IDataInitialize::GetDataSource
- Nouveau :
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory
- Dépréciation :
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Integrated Security=SSPI;Use Encryption for Data=Mandatory
- Nouveau :
- Utilisation :
DBPROP_INIT_PROVIDERSTRING
- Nouveau :
Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
- Dépréciation :
Server=[server];Database=[database];Trusted_Connection=yes;Encrypt=Mandatory
- Nouveau :
Authentification par nom d’utilisateur et mot de passe Microsoft Entra
- Utilisation :
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryPassword;User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- Utilisation :
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryPassword;UID=[username];PWD=[password];Encrypt=Mandatory
Authentification intégrée Microsoft Entra
- Utilisation :
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory
- Utilisation :
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
Authentification Microsoft Entra à l’aide d’un jeton d’accès
- Utilisation :
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Access Token=[access token] ;Use Encryption for Data=Mandatory
- Utilisation :
DBPROP_INIT_PROVIDERSTRING
La fourniture d’un jeton d’accès via
DBPROP_INIT_PROVIDERSTRING
n’est pas prise en charge
Authentification interactive Microsoft Entra
- Utilisation :
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryInteractive;User ID=[username];Use Encryption for Data=Mandatory
- Utilisation :
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryInteractive;UID=[username];Encrypt=Mandatory
Authentification à l’aide d’une identité managée Microsoft Entra
- Utilisation :
IDataInitialize::GetDataSource
- Identité managée affectée par l’utilisateur :
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryMSI;User ID=[Object ID];Use Encryption for Data=Mandatory
- Identité managée affectée par le système :
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryMSI;Use Encryption for Data=Mandatory
- Identité managée affectée par l’utilisateur :
- Utilisation :
DBPROP_INIT_PROVIDERSTRING
- Identité managée affectée par l’utilisateur :
Server=[server];Database=[database];Authentication=ActiveDirectoryMSI;UID=[Object ID];Encrypt=Mandatory
- Identité managée affectée par le système :
Server=[server];Database=[database];Authentication=ActiveDirectoryMSI;Encrypt=Mandatory
- Identité managée affectée par l’utilisateur :
Authentification avec principal de service Microsoft Entra
- Utilisation :
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
- Utilisation :
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryServicePrincipal;UID=[Application (client) ID];PWD=[Application (client) secret];Encrypt=Mandatory
Exemples de code
Les exemples suivants montrent le code requis pour se connecter à Microsoft Entra ID avec les mots clés de connexion.
Jeton d'accès
#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();
}
Intégration 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();
}
Contenu connexe
Autoriser l’accès aux applications Web Microsoft Entra à l’aide du flux d’octroi de code OAuth 2.0
Apprenez-en plus sur l’Authentification Microsoft Entra sur SQL Server.
Configurez les connexions du pilote à l’aide des mots clés de chaîne de connexion que le pilote OLE DB prend en charge.