Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
ODBC-stuurprogramma downloaden
Opmerking
Hoewel Microsoft Entra ID de nieuwe naam is voor Azure Active Directory (Azure AD) om te voorkomen dat bestaande omgevingen worden onderbroken, blijft Azure AD in sommige vastgelegde elementen, zoals ui-velden, verbindingsproviders, foutcodes en cmdlets. In dit artikel zijn de twee namen uitwisselbaar.
Purpose
Met het Microsoft ODBC-stuurprogramma voor SQL Server versie 13.1 en hoger kunnen ODBC-toepassingen verbinding maken met Azure SQL Database of Azure SQL Managed Instance met behulp van identiteiten in Microsoft Entra ID. Verificatie kan worden uitgevoerd met een gebruikersnaam en wachtwoord, een Microsoft Entra-toegangstoken, een door Microsoft Entra beheerde identiteit (17.3+) of geïntegreerde Windows-verificatie in een federatieve omgeving die lid is van een domein (17.6+ op Linux/macOS). Voor versie 13.1 van het ODBC-stuurprogramma is de verificatie van Microsoft Entra-toegangstokens uitsluitend voor Windows. Het ODBC-stuurprogramma versie 17 en hoger ondersteunen deze verificatie op alle platforms (Windows, Linux en macOS). Een nieuwe interactieve Verificatiemethode van Microsoft Entra, die ondersteuning biedt voor meervoudige verificatie, wordt geïntroduceerd in ODBC-stuurprogrammaversie 17.1 voor Windows. Er is een nieuwe door Microsoft Entra beheerde identiteitsverificatiemethode toegevoegd in ODBC-stuurprogrammaversie 17.3.1.1 voor zowel door het systeem toegewezen als door de gebruiker toegewezen beheerde identiteiten. Al deze opties worden bereikt met behulp van nieuwe DSN- en verbindingsreekstrefwoorden en verbindingskenmerken.
Als u Microsoft Entra-verificatie wilt gebruiken, moet u uw Azure SQL-gegevensbron configureren. Zie Microsoft Entra-verificatie configureren en beheren met Azure SQLvoor meer informatie.
Opmerking
Het ODBC-stuurprogramma op Linux en macOS vóór versie 17.6 ondersteunt alleen Microsoft Entra-verificatie rechtstreeks tegen Microsoft Entra-id. Als u Microsoft Entra-verificatie voor gebruikersnaam/wachtwoord van een Linux- of macOS-client gebruikt en uw Microsoft Entra-configuratie vereist dat de client wordt geverifieerd op basis van een Microsoft Entra Federation Services-eindpunt, kan de verificatie mislukken. Vanaf stuurprogrammaversie 17.6 is deze beperking verwijderd.
Nieuwe en/of gewijzigde DSN- en verbindingsreekstrefwoorden
Het Authentication trefwoord kan worden gebruikt wanneer u verbinding maakt met een DSN of verbindingsreeks om de verificatiemodus te beheren. De waarde die is ingesteld in de verbindingsreeks overschrijft die in de DSN, indien opgegeven. De waarde van het prekenmerk van de Authentication instelling is de waarde die wordt berekend op basis van de verbindingsreeks en DSN-waarden.
| Naam | Waarden | Verstek | Description | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Authentication |
(niet ingesteld), (lege tekenreeks), SqlPassword, ActiveDirectoryPassword, ActiveDirectoryIntegrated, ActiveDirectoryInteractive, ActiveDirectoryMsiActiveDirectoryServicePrincipal |
(niet ingesteld) | Hiermee bepaalt u de verificatiemodus.
|
||||||||||||||||||
Encrypt |
(niet ingesteld), Yes/Mandatory(18,0+),No/Optional (18,0+), Strict(18,0+) |
(zie beschrijving) | Hiermee bepaalt u versleuteling voor een verbinding. Als de waarde van het prekenmerk van de Authentication instelling zich niet none in de DSN- of verbindingsreeks bevindt, is de standaardwaarde Yes. De standaardwaarde bevindt zich ook Yes in versies 18.0.1+. Anders is de standaardwaarde No. Als het kenmerk SQL_COPT_SS_AUTHENTICATION de waarde Authenticationvan het prekenmerk overschrijft, stelt u expliciet de waarde van Versleuteling in de DSN- of verbindingsreeks of het verbindingskenmerk in. De voorattributiewaarde van Versleuteling is Yes als de waarde is ingesteld op Yes in de DSN of verbindingsreeks. |
Nieuwe en/of gewijzigde verbindingskenmerken
De volgende pre-connect verbindingsattributen zijn geïntroduceerd of gewijzigd ter ondersteuning van Microsoft Entra-verificatie. Wanneer een verbindingskenmerk een bijbehorende verbindingsreeks of DSN-trefwoord heeft en is ingesteld, heeft het verbindingskenmerk voorrang.
| Attribute | Type | Waarden | Verstek | Description |
|---|---|---|---|---|
SQL_COPT_SS_AUTHENTICATION |
SQL_IS_INTEGER |
SQL_AU_NONE, , SQL_AU_PASSWORDSQL_AU_AD_INTEGRATED, SQL_AU_AD_PASSWORD, , SQL_AU_AD_INTERACTIVE, , SQL_AU_AD_MSISQL_AU_AD_SPASQL_AU_RESET |
(niet ingesteld) | Zie de beschrijving van het trefwoord hierboven Authentication.
SQL_AU_NONE wordt geleverd om expliciet een setwaarde Authentication in de DSN- en/of verbindingsreeks te overschrijven, terwijl SQL_AU_RESET het kenmerk wordt uitgeschakeld als deze is ingesteld, zodat de DSN- of verbindingsreekswaarde voorrang krijgt. |
SQL_COPT_SS_ACCESS_TOKEN |
SQL_IS_POINTER |
Aanwijzer naar ACCESSTOKEN of NULL |
NUL | Als dit niet null is, geeft u het Microsoft Entra-toegangstoken op dat moet worden gebruikt. Het is een fout om een toegangstoken op te geven en ook UID, PWDof Trusted_Connectiontrefwoorden voor Authentication verbindingsreeksen of hun equivalente kenmerken. OPMERKING: ODBC-stuurprogrammaversie 13.1 ondersteunt deze instelling alleen in Windows. |
SQL_COPT_SS_ENCRYPT |
SQL_IS_INTEGER |
SQL_EN_OFF, SQL_EN_ON |
(zie beschrijving) | Hiermee bepaalt u versleuteling voor een verbinding.
SQL_EN_OFF en SQL_EN_ON schakel respectievelijk versleuteling uit en schakel deze in. Als de voorattribuutwaarde van de Authentication instelling niet none is of SQL_COPT_SS_ACCESS_TOKEN is ingesteld en Encrypt niet is opgegeven in de DSN- of verbindingsreeks, is de standaardwaarde SQL_EN_ON. Anders is de standaardwaarde SQL_EN_OFF. Als het verbindingskenmerk SQL_COPT_SS_AUTHENTICATION is ingesteld op niet none, stel expliciet SQL_COPT_SS_ENCRYPT in op de gewenste waarde als Encrypt niet is opgegeven in de DSN of verbindingsreeks. De effectieve waarde van dit kenmerk bepaalt of versleuteling wordt gebruikt voor de verbinding. |
SQL_COPT_SS_OLDPWD |
- | - | - | Niet ondersteund met Microsoft Entra-id, omdat wachtwoordwijzigingen in Microsoft Entra-principals niet kunnen worden uitgevoerd via een ODBC-verbinding. Wachtwoordverloop voor SQL Server-verificatie is geïntroduceerd in SQL Server 2005. Het SQL_COPT_SS_OLDPWD kenmerk is toegevoegd zodat de client zowel het oude als het nieuwe wachtwoord voor de verbinding kan opgeven. Wanneer deze eigenschap is ingesteld, gebruikt de provider de verbindingsgroep niet voor de eerste verbinding of voor toekomstige verbindingen, omdat de verbindingsreeks het oude wachtwoord bevat, dat nu is gewijzigd. |
SQL_COPT_SS_INTEGRATED_SECURITY |
SQL_IS_INTEGER |
SQL_IS_OFF,SQL_IS_ON |
SQL_IS_OFF |
Verouderd; gebruik in plaats daarvan SQL_COPT_SS_AUTHENTICATION ingesteld op SQL_AU_AD_INTEGRATED. Dwingt het gebruik van Windows-verificatie (Kerberos op Linux en macOS) af voor toegangsvalidatie bij serveraanmelding. Wanneer Windows-verificatie wordt gebruikt, negeert het stuurprogramma de gebruikers-id en wachtwoordwaarden die zijn opgegeven als onderdeel van SQLConnect, SQLDriverConnectof SQLBrowseConnect verwerking. |
Gebruikersinterface-toevoegingen voor Microsoft Entra-id (alleen Windows-stuurprogramma)
De DSN-installatie- en verbindings-UIS's van het stuurprogramma zijn uitgebreid met de extra opties die nodig zijn voor verificatie met Microsoft Entra-id.
DSN's maken en bewerken in de gebruikersinterface
Het is mogelijk om Microsoft Entra-verificatieopties te gebruiken bij het maken of bewerken van een bestaande DSN met behulp van de gebruikersinterface voor het instellen van het stuurprogramma:
Authentication=ActiveDirectoryIntegrated voor geïntegreerde Microsoft Entra-verificatie voor Azure SQL
Authentication=ActiveDirectoryPassword voor Verificatie van gebruikersnaam/wachtwoord van Microsoft Entra voor Azure SQL
Authentication=ActiveDirectoryInteractive voor interactieve Microsoft Entra-verificatie met Azure SQL
Opmerking
Vanaf stuurprogrammaversie 17.9 is het interactieve verificatiegedrag gewijzigd. Gebruikers worden altijd om referenties gevraagd, tenzij het stuurprogramma een geldig toegangstoken in de cache heeft. Deze wijziging voorkomt dat gebruikers van Microsoft Entra geregistreerde apparaten de prompt overslaan en zich automatisch aanmelden met referenties in de cache wanneer ze ActiveDirectoryInteractive verificatie gebruiken.
Authentication=SqlPassword voor verificatie via gebruikersnaam/wachtwoord voor SQL Server en Azure SQL
Trusted_Connection=Yes voor verouderde SSPI-verificatie van Windows
Authentication=ActiveDirectoryMsi voor door Microsoft Entra beheerde identiteitsverificatie
Authentication=ActiveDirectoryServicePrincipal voor verificatie van de Microsoft Entra-service-principal
De zeven opties komen overeen met Trusted_Connection=Yes (bestaande verouderde geïntegreerde Windows SSPI-verificatie) en Authentication=ActiveDirectoryIntegratedrespectievelijk , , SqlPasswordActiveDirectoryPassword, ActiveDirectoryInteractiveen ActiveDirectoryMsiActiveDirectoryServicePrincipal .
SQLDriverConnect-prompt (alleen Windows-stuurprogramma)
Het promptdialoogvenster dat wordt weergegeven door SQLDriverConnect wanneer er informatie wordt aangevraagd die nodig is om de verbinding te voltooien, bevat vier nieuwe opties voor Microsoft Entra-verificatie:
Deze opties komen overeen met dezelfde zes die beschikbaar zijn in de bovenstaande gebruikersinterface voor DSN-instellingen.
Voorbeeld van verbindingsreeksen
SQL Server-verificatie: verouderde syntaxis. Servercertificaat wordt niet gevalideerd en versleuteling wordt alleen gebruikt als de server dit afdwingt. De gebruikersnaam/het wachtwoord wordt doorgegeven in de verbindingsreeks.
server=Server;database=Database;UID=UserName;PWD=<password>;Encrypt=no;TrustServerCertificate=yes;SQL-verificatie: nieuwe syntaxis. De client vraagt versleuteling aan (de standaardwaarde
Encryptis)trueen het servercertificaat wordt gevalideerd, ongeacht de versleutelingsinstellingTrustServerCertificate(tenzij ingesteld optrue). De gebruikersnaam/het wachtwoord wordt doorgegeven in de verbindingsreeks.server=Server;database=Database;UID=UserName;PWD=<password>;Authentication=SqlPassword;Geïntegreerde Windows-verificatie (Kerberos in Linux en macOS) met behulp van SSPI (naar SQL Server of SQL IaaS) - huidige syntaxis. Servercertificaat wordt niet gevalideerd, tenzij versleuteling is vereist voor de server.
server=Server;database=Database;Trusted_Connection=yes;Encrypt=no;(Alleen Windows-stuurprogramma.) Geïntegreerde Windows-verificatie met behulp van SSPI (als de doeldatabase zich in SQL Server of SQL Server op Azure-VM's bevindt) - nieuwe syntaxis. De client vraagt versleuteling aan (de standaardwaarde
Encryptis)trueen het servercertificaat wordt gevalideerd, ongeacht de versleutelingsinstellingTrustServerCertificate(tenzij ingesteld optrue).server=Server;database=Database;Authentication=ActiveDirectoryIntegrated;Verificatie van gebruikersnaam/wachtwoord van Microsoft Entra (als de doeldatabase zich in Azure SQL Database of Azure SQL Managed Instance bevindt). Servercertificaat wordt gevalideerd, ongeacht de versleutelingsinstelling
TrustServerCertificate(tenzij ingesteld optrue). De gebruikersnaam/het wachtwoord wordt doorgegeven in de verbindingsreeks.server=Server;database=Database;UID=UserName;PWD=<password>;Authentication=ActiveDirectoryPassword;Encrypt=yes;(Alleen windows en Linux/macOS 17.6+, stuurprogramma.) Geïntegreerde Windows-verificatie met behulp van ADAL of Kerberos, waarbij referenties voor een Windows-account worden ingewisseld voor een Microsoft Entra-toegangstoken, ervan uitgaande dat de doeldatabase zich in Azure SQL bevindt. Servercertificaat wordt gevalideerd, ongeacht de versleutelingsinstelling
TrustServerCertificate(tenzij ingesteld optrue). In Linux/macOS moet een geschikt Kerberos-ticket beschikbaar zijn. Zie de sectie hieronder over federatieve accounts en geïntegreerde verificatie gebruiken voor meer informatie.server=Server;database=Database;Authentication=ActiveDirectoryIntegrated;Encrypt=yes;(Alleen Windows-stuurprogramma.) Microsoft Entra Interactive Authentication maakt gebruik van microsoft Entra-technologie voor meervoudige verificatie om verbinding in te stellen. In deze modus wordt door de aanmeldings-id op te geven een Azure-verificatiedialoogvenster geactiveerd en kan de gebruiker aanvullende verificatie invoeren om de verbinding te voltooien. De gebruikersnaam wordt doorgegeven in de verbindingsreeks.
server=Server;database=Database;UID=UserName;Authentication=ActiveDirectoryInteractive;Encrypt=yes;
Door Microsoft Entra beheerde identiteitverificatie kan een door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit gebruiken. Voor een door de gebruiker toegewezen identiteit moet u de UID instellen op de client-id van de identiteit voor Azure App Service of Azure Container Instance; anders moet u de object-id gebruiken. Voor door het systeem toegewezen identiteit is UID niet vereist.
Voor door het systeem toegewezen identiteit:
server=Server;database=Database;Authentication=ActiveDirectoryMsi;Encrypt=yes;Voor een door de gebruiker toegewezen identiteit waarvan de object-id gelijk is aan
myObjectId:server=Server;database=Database;UID=myObjectId;Authentication=ActiveDirectoryMsi;Encrypt=yes;Verificatie van Microsoft Entra service principal
server=Server;database=Database;UID=clientId;PWD=<password>;Authentication=ActiveDirectoryServicePrincipal;Encrypt=yes;
Opmerkingen
Wanneer u Microsoft Entra-opties gebruikt met het Windows ODBC-stuurprogramma vóór versie 17.4.2, moet u ervoor zorgen dat de Active Directory Authentication Library voor SQL Server is geïnstalleerd. Zorg ervoor dat de Linux- en macOS-stuurprogramma's geïnstalleerd zijn wanneer u deze systemen gebruikt. Voor stuurprogrammaversie 17.2 en hoger is dit geen expliciete afhankelijkheid, omdat deze niet vereist is voor de andere verificatiemethoden of ODBC-bewerkingen.
Wanneer microsoft Entra-configuratie beleidsregels voor voorwaardelijke toegang bevat en de client Windows 10 of Server 2016 of hoger is, kan verificatie via geïntegreerd of gebruikersnaam/wachtwoord mislukken. Voor beleid voor voorwaardelijke toegang is het gebruik van Web Account Manager (WAM) vereist. Dit wordt ondersteund in stuurprogrammaversie 17.6 of hoger voor Windows. Als u WAM wilt gebruiken, maakt u een nieuwe tekenreekswaarde met de naam
ADALuseWAMinHKLM\Software\ODBC\ODBCINST.INI\ODBC Driver 17 for SQL Server,HKCU\Software\ODBC\ODBC.INI\<your-user-DSN-name>ofHKLM\Software\ODBC\ODBC.INI\<your-system-DSN-name>voor globale DSN- of systeem-DSN-configuratie, en stelt u deze in op een waarde van 1. Houd er rekening mee dat verificatie met WAM geen ondersteuning biedt voor het uitvoeren van de toepassing als een andere gebruiker metrunas. Scenario's waarvoor beleid voor voorwaardelijke toegang is vereist, worden niet ondersteund voor Linux of macOS.Als u verbinding wilt maken met behulp van een gebruikersnaam en wachtwoord voor een SQL Server-account, kunt u nu de nieuwe
SqlPasswordoptie gebruiken. Deze optie wordt aanbevolen, met name voor Azure SQL, omdat deze optie veiligere standaardinstellingen voor verbindingen mogelijk maakt.Als u verbinding wilt maken met de gebruikersnaam en het wachtwoord van een Microsoft Entra-account, geeft u
Authentication=ActiveDirectoryPasswordde verbindingsreeks en deUIDPWDtrefwoorden op met respectievelijk de gebruikersnaam en het wachtwoord.Als u verbinding wilt maken met windows integrated of Microsoft Entra Integrated (Windows en Linux/macOS 17.6+, alleen stuurprogramma), geeft u
Authentication=ActiveDirectoryIntegratedop in de verbindingsreeks. Het stuurprogramma kiest automatisch de juiste verificatiemodus. Voor stuurprogrammaversie 17.7 of lagerUIDenPWDmag niet worden opgegeven. Vanaf stuurprogrammaversie 17.8UIDenPWDworden genegeerd.Om verbinding te maken met interactieve Microsoft Entra-verificatie (alleen voor Windows-stuurprogramma’s), moet
UIDworden opgegeven. Voor stuurprogrammaversie 17.7 en eerderPWDmag niet worden opgegeven. Vanaf stuurprogrammaversie 17.8 wordtPWDgenegeerd.Vanaf versie 18.1 wordt
Trusted_Connection=Yesniet langer standaard gebruikgemaakt van federatieve verificatie met Microsoft Entra ID, maar wordt in plaats daarvan SSPI-integratie gebruikt. Als u Microsoft Entra-id voor deze optie wilt gebruiken,TrustedConnection_UseAAD=Yesmoet u deze configureren.Versies 17.7 en lagere versies van het ODBC-stuurprogramma hebben een bekend probleem met een verbindingstime-out wanneer Microsoft Entra-verificatie en Versleuteling Forceren zijn ingeschakeld op een SQL Server-exemplaar. Het SQL Server-foutenlogboek kan foutberichten bevatten, zoals: 'Fout: 33155, Ernst: 20, Status: 1. Er is een verbrekingsevenement opgetreden wanneer de server wacht op een federatief verificatietoken. Dit kan het gevolg zijn van sluiting door de client of het verlopen van de time-out van de server.' Als u oplossingen voor hoge beschikbaarheid gebruikt, zoals AlwaysOn-beschikbaarheidsgroepen of failoverclusterexemplaren, kan de interne clustercommunicatie voor SQL Server worden beïnvloed door dit gedrag dat van invloed kan zijn op de beschikbaarheid van resources. In het clusterlogboek ziet u mogelijk foutberichten zoals:
[hadrag] Connect to SQL Server ...ODBC Error: [HY000] [Microsoft][ODBC Driver 17 for SQL Server]An unknown error has occurred. Detailed error information is not available. (0). MET ODBC-stuurprogrammaversies 17.10 en hoger wordt dit probleem opgelost en met SQL Server 2022 GDR KB5021522 /CU1 KB5022375, wordt het meest recente stuurprogramma dat deze oplossing bevat, geïnstalleerd met sql Server-installatie. U kunt controleren welke versie van het ODBC-stuurprogramma u hebt geïnstalleerd door te verwijzen naar de ODBC-gegevensbronbeheerder.Vanaf ODBC-stuurprogrammaversie 18.3 wordt verificatie met beheerde identiteit (ActiveDirectoryMSI) ondersteund in Azure Arc en Azure Cloud Shell.
Verifiëren met een toegangstoken
Met het kenmerk voorverbinding SQL_COPT_SS_ACCESS_TOKEN kunt u een toegangstoken gebruiken dat is verkregen van Microsoft Entra ID voor verificatie, in plaats van een gebruikersnaam en wachtwoord. Daarbij omzeilt het stuurprogramma zowel de onderhandeling als het verkrijgen van een toegangstoken. Als u een toegangstoken wilt gebruiken, stelt u het SQL_COPT_SS_ACCESS_TOKEN verbindingskenmerk in op een aanwijzer op een ACCESSTOKEN structuur:
typedef struct AccessToken
{
DWORD dataSize;
BYTE data[];
} ACCESSTOKEN;
Het ACCESSTOKEN is een structuur met variabele lengte die bestaat uit een lengte van 4 bytes gevolgd door lengte bytes aan ondoorzichtige gegevens die het toegangstoken vormen. Vanwege de manier waarop SQL Server toegangstokens verwerkt, moet één verkregen via een OAuth 2.0 JSON-antwoord worden uitgebreid, zodat elke byte wordt gevolgd door een byte zonder opvulling, vergelijkbaar met een UCS-2-tekenreeks die alleen ASCII-tekens bevat. Het token is echter een ondoorzichtige waarde en de opgegeven lengte, in bytes, mag geen null-eindteken bevatten. Vanwege hun aanzienlijke lengte- en indelingsbeperkingen is deze verificatiemethode alleen programmatisch beschikbaar via het SQL_COPT_SS_ACCESS_TOKEN verbindingskenmerk. Er is geen overeenkomend DSN- of verbindingsreekswoord. De verbindingsreeks mag geen UID, PWD, Authentication of Trusted_Connection trefwoorden bevatten.
Opmerking
Het ODBC-stuurprogramma versie 13.1 ondersteunt deze verificatie alleen in Windows. Volgende versies ondersteunen deze verificatie op alle platforms.
Voorbeeldcode voor Microsoft Entra-verificatie
In het volgende voorbeeld ziet u de code die is vereist om verbinding te maken met SQL Server met behulp van Microsoft Entra-id met verbindingstrefwoorden. U hoeft de toepassingscode zelf niet te wijzigen. De verbindingsreeks of DSN als deze wordt gebruikt, is de enige wijziging die nodig is voor het gebruik van Microsoft Entra-id voor verificatie:
...
SQLCHAR connString[] = "Driver={ODBC Driver 18 for SQL Server};Server={server};UID=myuser;PWD=<password>;Authentication=ActiveDirectoryPassword;Encrypt=yes;"
...
SQLDriverConnect(hDbc, NULL, connString, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT);
...
In het volgende voorbeeld ziet u de code die is vereist om verbinding te maken met SQL Server met behulp van Microsoft Entra-toegangstokenverificatie. In dit geval moet u de toepassingscode wijzigen om het toegangstoken te verwerken en het bijbehorende verbindingskenmerk in te stellen.
SQLCHAR connString[] = "Driver={ODBC Driver 18 for SQL Server};Server={server};Encrypt=yes;"
SQLCHAR accessToken[] = "eyJ0eXAiOi..."; // In the format extracted from an OAuth JSON response
...
DWORD dataSize = 2 * strlen(accessToken);
ACCESSTOKEN *pAccToken = malloc(sizeof(ACCESSTOKEN) + dataSize);
pAccToken->dataSize = dataSize;
// Expand access token with padding bytes
for(int i = 0, j = 0; i < dataSize; i += 2, j++) {
pAccToken->data[i] = accessToken[j];
pAccToken->data[i+1] = 0;
}
...
SQLSetConnectAttr(hDbc, SQL_COPT_SS_ACCESS_TOKEN, (SQLPOINTER)pAccToken, SQL_IS_POINTER);
SQLDriverConnect(hDbc, NULL, connString, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT);
...
free(pAccToken);
De volgende voorbeeldverbindingsreeks is bedoeld voor gebruik met interactieve Microsoft Entra-verificatie. Het bevat geen PWD-veld, omdat het wachtwoord wordt ingevoerd op het scherm Azure-verificatie.
SQLCHAR connString[] = "Driver={ODBC Driver 18 for SQL Server};Server={server};UID=myuser;Authentication=ActiveDirectoryInteractive;Encrypt=yes;"
De volgende voorbeeldverbindingsreeks is bedoeld voor gebruik met door Microsoft Entra beheerde identiteitsverificatie. UID wordt ingesteld op de object-/client-id van de gebruikersidentiteit wanneer u een door de gebruiker toegewezen identiteit gebruikt.
// For system-assigned identity,
SQLCHAR connString[] = "Driver={ODBC Driver 18 for SQL Server};Server={server};Authentication=ActiveDirectoryMsi;Encrypt=yes;"
...
// For user-assigned identity with object ID equals to myObjectId
SQLCHAR connString[] = "Driver={ODBC Driver 18 for SQL Server};Server={server};UID=myObjectId;Authentication=ActiveDirectoryMsi;Encrypt=yes;"
Overwegingen voor het gebruik van federatieve ADFS-accounts in Linux/macOS
Vanaf versie 17.6 ondersteunen de stuurprogramma's voor Linux en macOS verificatie met behulp van Microsoft Entra ADFS-federatieve accounts met behulp van gebruikersnaam/wachtwoord (ActiveDirectoryPassword) of Kerberos (ActiveDirectoryIntegrated). Er zijn enkele beperkingen afhankelijk van het platform wanneer u de geïntegreerde modus gebruikt.
Bij verificatie met een gebruiker waarvan het UPN-achtervoegsel verschilt van de Kerberos-realm, dat wil gezegd, wordt een alternatief UPN-achtervoegsel gebruikt, is het nodig om de optie Enterprise Principal te gebruiken (gebruik de -E optie met kiniten geef de principal-naam op in het formulier user@federated-domain) bij het verkrijgen van Kerberos-tickets. Op deze manier kan het stuurprogramma zowel het federatieve domein als de Kerberos-realm correct bepalen.
U kunt controleren of een geschikt Kerberos-ticket beschikbaar is door de uitvoer van de klist opdracht te controleren. Als het gefedereerde domein hetzelfde is als de Kerberos realm en UPN-achtervoegsel, is de principeelnaam in de vorm van user@realm. Als dit anders is, moet de principal-naam van het formulier user@federated-domain@realm zijn.
Linux
Op SUSE 11 biedt de standaardversie van de Kerberos-bibliotheekversie 1.6.x geen ondersteuning voor de optie Enterprise Principal die nodig is voor het gebruik van alternatieve UPN-achtervoegsels. Als u alternatieve UPN-achtervoegsels wilt gebruiken met geïntegreerde Microsoft Entra-verificatie, moet u de Kerberos-bibliotheek upgraden naar 1.7 of hoger.
In Alpine Linux biedt de standaardinstelling libcurl geen ondersteuning voor de SPNEGO/Kerberos-verificatie die is vereist voor geïntegreerde Microsoft Entra-verificatie.
macOS
De Kerberos-bibliotheek kinit van het systeem ondersteunt Enterprise Principal met de --enterprise optie, maar voert ook impliciet naamkanonisatie uit, waardoor het gebruik van alternatieve UPN-achtervoegsels wordt voorkomen. Als u alternatieve UPN-achtervoegsels wilt gebruiken met geïntegreerde Microsoft Entra-verificatie, installeert u een nieuwere Kerberos-bibliotheek via brew install krb5 en gebruikt u kinit deze met de -E optie zoals hierboven beschreven.