Поделиться через


Использование идентификатора Microsoft Entra с драйвером ODBC

Скачать драйвер ODBC

Примечание.

Хотя идентификатор Microsoft Entra — это новое имя Azure Active Directory (Azure AD), чтобы предотвратить нарушение существующих сред, Azure AD по-прежнему остается в некоторых жестко закодированных элементах, таких как поля пользовательского интерфейса, поставщики подключений, коды ошибок и командлеты. В этой статье два имени являются взаимозаменяемыми.

Характер использования

Драйвер Microsoft ODBC для SQL Server версии 13.1 и выше позволяет приложениям ODBC подключаться к База данных SQL Azure или Управляемый экземпляр SQL Azure с помощью удостоверений в идентификаторе Microsoft Entra. Проверку подлинности можно выполнить с помощью имени пользователя и пароля, маркера доступа Microsoft Entra, управляемого удостоверения Microsoft Entra (17.3+) или встроенной проверки подлинности Windows в федеративной , присоединенной к домену среде (17.6+ в Linux или macOS). Для драйвера ODBC версии 13.1 проверка подлинности маркера доступа Microsoft Entra доступна только для Windows. Драйвер ODBC версии 17 и более поздней поддерживает эту проверку подлинности на всех платформах (Windows, Linux и macOS). Новый интерактивный метод проверки подлинности Microsoft Entra, поддерживающий многофакторную проверку подлинности, представлен в ODBC Driver версии 17.1 для Windows. Новый метод проверки подлинности управляемого удостоверения Microsoft Entra был добавлен в ODBC Driver версии 17.3.1.1 для управляемых удостоверений, назначаемых системой, и для управляемых удостоверений, назначенных пользователем. Все эти действия выполняются с помощью новых ключевых слов строки подключения и имени DSN, а также атрибутов подключения.

Чтобы использовать проверку подлинности Microsoft Entra, необходимо настроить источник данных SQL Azure. Дополнительные сведения см. в разделе о настройке и администрировании проверки подлинности Microsoft Entra с помощью Azure SQL.

Примечание.

Драйвер ODBC в Linux и macOS до версии 17.6 поддерживает проверку подлинности Microsoft Entra непосредственно с идентификатором Microsoft Entra. Если вы используете проверку подлинности имени пользователя и пароля Microsoft Entra из клиента Linux или macOS, а конфигурация Microsoft Entra требует, чтобы клиент прошел проверку подлинности в конечной точке служб федерации Microsoft Entra, проверка подлинности может завершиться ошибкой. В версии драйвера 17.6 это ограничение снято.

Новые или измененные ключевые слова строки подключения и имени DSN

Ключевое слово Authentication можно использовать при установке подключения через имя DSN или строку подключения для управления режимом проверки подлинности. Значение, заданное в строке подключения, переопределяет значение в имени DSN, если оно указано. Значение предварительного атрибута параметра Authentication вычисляется на основе значений строки подключения и имени DSN.

Имя. Values По умолчанию. Description
Authentication (не задано), (пустая строка), SqlPassword, ActiveDirectoryPassword, ActiveDirectoryIntegrated, ActiveDirectoryInteractive, ActiveDirectoryMsi, ActiveDirectoryServicePrincipal (не задано) Управляет режимом проверки подлинности.
значениеОписание
(не задано)Режим проверки подлинности определяется другими ключевыми словами (существующие параметры устаревшего подключения).
(пустая строка)(Только строка подключения.) Переопределите и отмените набор значений, заданных Authentication в dsN.
SqlPasswordПрямая проверка подлинности в SQL с помощью имени пользователя и пароля.
ActiveDirectoryPasswordПроверка подлинности с помощью удостоверения Microsoft Entra с помощью имени пользователя и пароля.
ActiveDirectoryIntegratedТолько драйвер Windows, Linux и macOS 17.6+. Проверка подлинности с помощью федеративных учетных данных Windows с помощью идентификатора Microsoft Entra с интегрированной проверкой подлинности.
ActiveDirectoryInteractiveТолько драйвер Windows. Проверка подлинности с помощью удостоверения Microsoft Entra с помощью интерактивной проверки подлинности.
ActiveDirectoryMsiПроверка подлинности с помощью управляемого удостоверения Microsoft Entra. Для удостоверения, назначаемого пользователем, задайте идентификатор клиента идентификатора идентификатора для службы приложение Azure или экземпляра контейнера Azure; в противном случае используйте его идентификатор объекта. Для назначаемого системой удостоверения UID не требуется.
ActiveDirectoryServicePrincipal(17.7+) Проверка подлинности с помощью субъекта-службы Microsoft Entra. В качестве UID задается идентификатор клиента субъекта-службы. В качестве PWD задается секрет клиента.
Encrypt (не задано), Yes/Mandatory (18.0 и выше), No/Optional (18.0 и выше), Strict (18.0 и выше) (см. описание) Управляет шифрованием соединения. Если значение предварительного атрибута параметра Authentication отлично от none в DSN или строке подключения, по умолчанию используется Yes. Значением по умолчанию также является Yes в версии 18.0.1 и выше. В противном случае значение по умолчанию — No. Если атрибут SQL_COPT_SS_AUTHENTICATION переопределяет значение предварительного атрибута Authentication, явно задайте значение шифрования в имени DSN, строке подключения или атрибуте подключения. Значением предварительного атрибута шифрования является Yes, если значение равно Yes в имени DSN или в строке подключения.

Новые или измененные атрибуты подключения

Следующие атрибуты подключения предварительного подключения были введены или изменены для поддержки проверки подлинности Microsoft Entra. Если атрибут подключения имеет соответствующее ключевое слово строки подключения или имени DSN и установлен, у этого атрибута будет более высокий приоритет.

Атрибут Тип Values По умолчанию. Description
SQL_COPT_SS_AUTHENTICATION SQL_IS_INTEGER SQL_AU_NONE, SQL_AU_PASSWORD, SQL_AU_AD_INTEGRATEDSQL_AU_AD_PASSWORDSQL_AU_AD_INTERACTIVESQL_AU_AD_MSISQL_AU_AD_SPASQL_AU_RESET (не задано) См. описание ключевого слова Authentication выше. SQL_AU_NONE предоставляется для явного переопределения заданного значения Authentication в имени DSN и (или) строке подключения, в то время как SQL_AU_RESET отменяет атрибут, если он был установлен, и значение имени DSN или строки подключения получает более высокий приоритет.
SQL_COPT_SS_ACCESS_TOKEN SQL_IS_POINTER Указатель на ACCESSTOKEN или значение NULL NULL Если значение не равно NULL, указывает используемый маркер доступа Microsoft Entra. Указание маркера доступа, а также ключевых слов строки подключения UID, PWD, Trusted_Connection, Authentication или эквивалентных атрибутов является ошибкой.
ПРИМЕЧАНИЕ. Драйвер ODBC версии 13.1 поддерживает этот параметр только в Windows.
SQL_COPT_SS_ENCRYPT SQL_IS_INTEGER SQL_EN_OFF, SQL_EN_ON (см. описание) Управляет шифрованием соединения. SQL_EN_OFF отключает шифрование, а SQL_EN_ON— включает. Если значение предварительного атрибута параметра Authentication отличается от none или задано значение SQL_COPT_SS_ACCESS_TOKEN, а ключевое слово Encrypt не указано ни в имени DSN, ни в строке подключения, по умолчанию используется значение SQL_EN_ON. В противном случае значение по умолчанию — SQL_EN_OFF. Если для атрибута подключения SQL_COPT_SS_AUTHENTICATION не задано значение none, явно задайте для SQL_COPT_SS_ENCRYPT нужное значение, если ключевое слово Encrypt не указано в имени DSN или в строке подключения. Эффективное значение этого атрибута определяет , используется ли шифрование для подключения.
SQL_COPT_SS_OLDPWD - - - Не поддерживается с идентификатором Microsoft Entra, так как изменение пароля для субъектов Microsoft Entra невозможно выполнить через подключение ODBC.

Истечение срока действия пароля для проверки подлинности SQL Server было введено в SQL Server 2005. Добавлен атрибут SQL_COPT_SS_OLDPWD, чтобы клиент мог предоставлять как старый, так и новый пароль для подключения. Если это свойство задано, поставщик не будет использовать пул подключений для первого подключения или для будущих подключений, так как строка подключения содержит "старый пароль", который теперь изменился.
SQL_COPT_SS_INTEGRATED_SECURITY SQL_IS_INTEGER SQL_IS_OFF,SQL_IS_ON SQL_IS_OFF Нерекомендуемый. Вместо этого для параметра SQL_COPT_SS_AUTHENTICATION укажите значение SQL_AU_AD_INTEGRATED.

Задает принудительное использование проверки подлинности Windows (Kerberos в Linux и macOS) для проверки доступа по имени входа для сервера. Если используется проверка подлинности Windows, драйвер пропускает значения идентификатора пользователя и пароля, предоставленные в процессе обработки SQLConnect, SQLDriverConnect или SQLBrowseConnect.

Дополнения пользовательского интерфейса для идентификатора Microsoft Entra (только драйвер Windows)

Параметры настройки и подключения dsN драйвера были улучшены с дополнительными параметрами, необходимыми для проверки подлинности с помощью идентификатора Microsoft Entra.

Создание и изменение имен DSN в пользовательском интерфейсе

При создании или редактировании существующего DSN с помощью пользовательского интерфейса установки драйвера можно использовать параметры проверки подлинности Microsoft Entra:

Authentication=ActiveDirectoryIntegrated Встроенная проверка подлинности Microsoft Entra в SQL Azure

Экран создания и редактирования DSN с выбранной интегрированной проверкой подлинности Microsoft Entra.

Authentication=ActiveDirectoryPassword для проверки подлинности имени пользователя и пароля Microsoft Entra в SQL Azure

Экран создания и редактирования dsN с выбранной проверкой подлинности паролей Microsoft Entra.

Authentication=ActiveDirectoryInteractive Для интерактивной проверки подлинности Microsoft Entra в SQL Azure

Экран создания и редактирования DSN с выбранной интерактивной проверкой подлинности Microsoft Entra.

Примечание.

Начиная с драйвера версии 17.9, поведение интерактивной проверки подлинности изменилось. Пользователи всегда будут получать запрос на ввод учетных данных, если только драйвер не кэширует допустимый маркер доступа. Это изменение позволяет пользователям на устройствах, присоединенных к Microsoft Entra, пропускать запрос и автоматически выполнять вход с помощью кэшированных учетных данных при использовании ActiveDirectoryInteractive проверки подлинности.

Authentication=SqlPassword для проверки подлинности имени пользователя и пароля в SQL Server и Azure SQL

Экран создания и редактирования имени DSN с выбранной проверкой подлинности SQL Server.

Trusted_Connection=Yes для устаревшей встроенной проверки подлинности SSPI Windows.

Экран создания и редактирования имени DSN с выбранной интегрированной проверкой подлинности Windows.

Authentication=ActiveDirectoryMsi Для проверки подлинности управляемого удостоверения Microsoft Entra

Экран создания и редактирования имени DSN с выбранной проверкой подлинности на основе управляемого удостоверения службы.

Authentication=ActiveDirectoryServicePrincipal Для проверки подлинности субъекта-службы Microsoft Entra

Экран создания и редактирования dsN с выбранной проверкой подлинности субъекта-службы Microsoft Entra.

Семь параметров соответствуют Trusted_Connection=Yes (устаревшая встроенная проверка подлинности только с использованием Windows SSPI), Authentication= ActiveDirectoryIntegrated, SqlPassword, ActiveDirectoryPassword, ActiveDirectoryInteractive, ActiveDirectoryMsi и ActiveDirectoryServicePrincipal соответственно.

Диалоговое окно SQLDriverConnect (только драйвер Windows)

Диалоговое окно запроса, отображаемое SQLDriverConnect при запросе сведений, необходимых для завершения подключения, содержит четыре новых варианта проверки подлинности Microsoft Entra:

Диалоговое окно входа SQL Server, отображаемое SQLDriverConnect.

Эти параметры соответствуют шести доступным установкам в пользовательском интерфейсе настройки имени DSN.

Примеры строк подключения

  1. Устаревший синтаксис проверки подлинности SQL Server. Сертификат сервера не проверяется, и шифрование используется только в том случае, если сервер применяет его принудительно. Имя пользователя и пароль передаются в строку подключения.

    server=Server;database=Database;UID=UserName;PWD=<password>;Encrypt=no;TrustServerCertificate=yes;

  2. Новый синтаксис проверки подлинности SQL. Клиент запрашивает шифрование (значение параметра Encrypt по умолчанию — true), а сертификат сервера проверяется независимо от значения параметра шифрования (если только для параметра TrustServerCertificate не задано значение true). Имя пользователя и пароль передаются в строку подключения.

    server=Server;database=Database;UID=UserName;PWD=<password>;Authentication=SqlPassword;

  3. Встроенная проверка подлинности Windows (Kerberos в Linux и macOS) с использованием SSPI (для SQL Server или IaaS SQL) — текущий синтаксис. Сертификат сервера не проверяется, если сервер не требует использовать шифрование.

    server=Server;database=Database;Trusted_Connection=yes;Encrypt=no;

  4. (только драйвер Windows.) Встроенная проверка подлинности Windows с помощью SSPI (если целевая база данных находится в SQL Server или SQL Server на виртуальных машинах Azure) — новый синтаксис. Клиент запрашивает шифрование (значение параметра Encrypt по умолчанию — true), а сертификат сервера проверяется независимо от значения параметра шифрования (если только для параметра TrustServerCertificate не задано значение true).

    server=Server;database=Database;Authentication=ActiveDirectoryIntegrated;

  5. Проверка подлинности имени пользователя и пароля Microsoft Entra (если целевая база данных находится в База данных SQL Azure или Управляемый экземпляр SQL Azure). Сертификат сервера проверяется независимо от значения параметра шифрования (если только параметр TrustServerCertificate не имеет значение true). Имя пользователя и пароль передаются в строку подключения.

    server=Server;database=Database;UID=UserName;PWD=<password>;Authentication=ActiveDirectoryPassword;Encrypt=yes;

  6. (Только для Windows и Linux или macOS 17.6+, драйвер.) Встроенная проверка подлинности Windows с помощью ADAL или Kerberos, которая включает активацию учетных данных учетной записи Windows для маркера доступа Microsoft Entra, если целевая база данных находится в SQL Azure. Сертификат сервера проверяется независимо от значения параметра шифрования (если только параметр TrustServerCertificate не имеет значение true). В Linux/macOS должен быть доступен подходящий билет Kerberos. Дополнительные сведения см. в разделе ниже, посвященном федеративным учетным записям, и статье Использование встроенной проверки подлинности.

    server=Server;database=Database;Authentication=ActiveDirectoryIntegrated;Encrypt=yes;

  7. (только драйвер Windows.) Интерактивная проверка подлинности Microsoft Entra использует технологию многофакторной проверки подлинности Microsoft Entra для настройки подключения. В этом режиме, указав идентификатор входа, запускается диалоговое окно проверки подлинности Azure и позволяет пользователю вводить дополнительную проверку для завершения подключения. Имя пользователя передается в строку подключения.

    server=Server;database=Database;UID=UserName;Authentication=ActiveDirectoryInteractive;Encrypt=yes;

    Пользовательский интерфейс проверки подлинности Windows Azure при использовании интерактивной проверки подлинности Active Directory.

  8. Проверка подлинности управляемого удостоверения Microsoft Entra может использовать назначаемое системой или назначаемое пользователем управляемое удостоверение. Для удостоверения, назначаемого пользователем, задайте идентификатор клиента идентификатора идентификатора для службы приложение Azure или экземпляра контейнера Azure; в противном случае используйте его идентификатор объекта. Для назначаемого системой удостоверения UID не требуется.

    Для назначаемого системой удостоверения:

    server=Server;database=Database;Authentication=ActiveDirectoryMsi;Encrypt=yes;

    Для назначаемого пользователем удостоверения с идентификатором myObjectIdобъекта равно:

    server=Server;database=Database;UID=myObjectId;Authentication=ActiveDirectoryMsi;Encrypt=yes;

  9. Проверка подлинности субъекта-службы Microsoft Entra

server=Server;database=Database;UID=clientId;PWD=<password>;Authentication=ActiveDirectoryServicePrincipal;Encrypt=yes;

Замечания

  • При использовании параметров Microsoft Entra с драйвером ODBC для Windows до версии 17.4.2 убедитесь, что библиотека проверки подлинности Active Directory для SQL Server установлена. При использовании драйверов Linux и macOS убедитесь, что libcurl установлена. Для драйвера версии 17.2 и более поздних эта зависимость не является явной, так как она не обязательна для других методов проверки подлинности или операций ODBC.

  • Если конфигурация Microsoft Entra включает политики условного доступа, а клиент — Windows 10 или Server 2016 или более поздней версии, проверка подлинности с помощью встроенного или имени пользователя или пароля может завершиться ошибкой. Политики условного доступа требуют использования диспетчера веб-учетных записей (WAM), который поддерживается в драйвере 17.6 или более поздней версии для Windows. Чтобы использовать WAM, создайте новое строковое значение с именем ADALuseWAM HKLM\Software\ODBC\ODBCINST.INI\ODBC Driver 17 for SQL Server, HKCU\Software\ODBC\ODBC.INI\<your-user-DSN-name>или HKLM\Software\ODBC\ODBC.INI\<your-system-DSN-name> для глобальной, пользовательской DSN или системной конфигурации dsN, соответственно, и задайте для него значение 1. Обратите внимание, что при проверке подлинности с помощью WAM не поддерживается запуск приложения от имени другого пользователя с помощью runas. Сценарии, для которых требуются политики условного доступа, не поддерживаются для Linux или macOS.

  • Чтобы подключиться с помощью имени пользователя и пароля учетной записи SQL Server, теперь можно использовать новый параметр SqlPassword (рекомендуется для Azure SQL, так как этот параметр обеспечивает более безопасные значения по умолчанию для подключений).

  • Чтобы подключиться с помощью имени пользователя и пароля учетной записи Microsoft Entra, укажите Authentication=ActiveDirectoryPassword в строка подключения и UID PWD ключевые слова с именем пользователя и паролем соответственно.

  • Чтобы подключиться с помощью встроенной проверки подлинности Windows или Microsoft Entra (Windows и Linux/macOS 17.6+, только драйвера), укажите Authentication=ActiveDirectoryIntegrated в строка подключения. Драйвер автоматически выбирает правильный режим проверки подлинности. Для драйверов версии 17.7 и более ранних версий UID и PWD не задаются. Начиная с драйвера версии 17.8 UID и PWD игнорируются.

  • Чтобы подключиться с помощью интерактивной проверки подлинности Microsoft Entra (только драйвер Windows), UID необходимо указать. Для драйверов версии 17.7 и более ранних версий PWD не задается. Начиная с драйвера версии 17.8 PWD игнорируется.

  • Начиная с версии 18.1, Trusted_Connection=Yes больше не использует федеративную проверку подлинности идентификатора Microsoft Entra ID по умолчанию и использует встроенную SSPI. Чтобы использовать идентификатор Microsoft Entra для этого параметра, TrustedConnection_UseAAD=Yes необходимо настроить.

  • Драйвер ODBC версии 17.7 и ниже имеют известная проблема с временем ожидания подключения, когда проверка подлинности Microsoft Entra и принудительное шифрование включены в экземпляре SQL Server. Журнал ошибок SQL Server может содержать сообщения об ошибках: "Ошибка: 33155, серьезность: 20, состояние: 1. Событие отключения возникает, когда сервер ожидает маркера федеративной проверки подлинности. Это может быть связано с истечением срока действия закрытия клиента или истечения времени ожидания сервера. Если вы используете решения с высоким уровнем доступности, такие как группы доступности AlwaysOn или экземпляры отказоустойчивого кластера, то внутреннее взаимодействие кластера для SQL Server может повлиять на это поведение, которое может повлиять на доступность ресурсов. В журнале кластера могут отображаться такие сообщения об ошибках, как: [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) Драйвер ODBC версии 17.10 и более поздних версий исправляет эту проблему и с sql Server 2022 GDR KB5021522 /CU1 KB5022375, последний драйвер, содержащий это исправление, устанавливается с установкой SQL Server. Вы можете проверить, какая версия драйвера ODBC установлена, обратившись к администратору источника данных ODBC.

  • Начиная с драйвера ODBC версии 18.3 проверка подлинности управляемого удостоверения (ActiveDirectoryMSI) поддерживается в Azure Arc и Azure Cloud Shell.

Проверка подлинности с помощью маркера доступа

Атрибут SQL_COPT_SS_ACCESS_TOKEN предварительного подключения позволяет использовать маркер доступа, полученный от идентификатора Microsoft Entra для проверки подлинности вместо имени пользователя и пароля, а также проходит согласование и получение маркера доступа драйвером. Чтобы использовать маркер доступа, задайте для указателя на структуру ACCESSTOKEN атрибут подключения SQL_COPT_SS_ACCESS_TOKEN:

typedef struct AccessToken
{
    DWORD dataSize;
    BYTE data[];
} ACCESSTOKEN;

ACCESSTOKEN представляет собой структуру переменной длины, состоящую из 4-байт, за которой следует значение длины байт непрозрачных данных, образующих маркер доступа. Из-за того, как SQL Server обрабатывает маркеры доступа, один из них, полученный с помощью ответа JSON OAuth 2.0, должен быть расширен таким образом, чтобы за каждым байтом был нулевой дополнительный байт аналогично строке UCS-2, содержащей только символы ASCII. Маркер является непрозрачным значением, а длина, указанная в байтах, НЕ должна содержать символ завершения NULL. По причине существенных ограничений длины и формата этот метод проверки подлинности доступен только программно с помощью атрибута подключения SQL_COPT_SS_ACCESS_TOKEN. Соответствующее ключевое слово DSN или строки подключения отсутствуют. Строка подключения не должна содержать ключевые слова UID, PWD, Authentication или Trusted_Connection.

Примечание.

Драйвер ODBC версии 13.1 поддерживает такую проверку подлинности только в Windows. Последующие версии поддерживают эту проверку подлинности на всех платформах.

Пример кода проверки подлинности Microsoft Entra

В следующем примере показан код, необходимый для подключения к SQL Server с помощью идентификатора Microsoft Entra с ключевыми словами подключения. Нет необходимости изменять сам код приложения. Строка подключения или DSN, если он используется, является единственным изменением, необходимым для использования идентификатора Microsoft Entra для проверки подлинности:

    ...
    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);
    ...

В следующем примере показан код, необходимый для подключения к SQL Server с помощью проверки подлинности маркера доступа Microsoft Entra. В этом случае необходимо изменить код приложения для обработки маркера доступа и настроить связанный атрибут подключения.

    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);

Следующий пример строка подключения предназначен для использования с интерактивной проверкой подлинности Microsoft Entra. Обратите внимание, что он не содержит поле PWD, так как пароль будет вводиться на экране проверки подлинности Azure.

SQLCHAR connString[] = "Driver={ODBC Driver 18 for SQL Server};Server={server};UID=myuser;Authentication=ActiveDirectoryInteractive;Encrypt=yes;"

Следующий пример строка подключения предназначен для использования с проверкой подлинности управляемого удостоверения Microsoft Entra. UID присваивается идентификатору объекта или клиента удостоверения пользователя при использовании удостоверения, назначаемого пользователем.

// 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;"

Рекомендации по использованию федеративных учетных записей ADFS в Linux или macOS

Начиная с версии 17.6 драйверы для Linux и macOS поддерживают проверку подлинности с помощью федеративных учетных записей Microsoft Entra ADFS с использованием имени пользователя или пароля (ActiveDirectoryPassword) или Kerberos (ActiveDirectoryIntegrated). В интегрированном режиме существуют некоторые ограничения, зависящие от платформы.

При проверке подлинности на основе имени пользователя, чей суффикс имени субъекта-пользователя отличается от области Kerberos, т. е. используется альтернативный суффикс имени субъекта-пользователя, необходимо применять параметр корпоративного субъекта (используйте параметр -E со значением kinit и укажите имя субъекта в формате user@federated-domain) при получении билетов Kerberos. Это позволяет драйверу правильно определить федеративный домен и область Kerberos.

Чтобы проверить, доступен ли подходящий билет Kerberos, изучив выходные данные команды klist. Если федеративный домен совпадает с областью Kerberos и суффиксом имени участника-пользователя, имя субъекта является формой user@realm. Если он отличается, имя субъекта будет иметь такой формат: user@federated-domain@realm.

Linux

В SUSE 11 библиотека Kerberos версии 1.6.x по умолчанию не поддерживает вариант субъекта предприятия, необходимый для использования альтернативных суффиксов имени участника-пользователя. Чтобы использовать альтернативные суффиксы имени участника-пользователя с интегрированной проверкой подлинности Microsoft Entra, обновите библиотеку Kerberos до версии 1.7 или более поздней версии.

В Alpine Linux по умолчанию libcurl не поддерживается проверка подлинности SPNEGO/Kerberos, необходимая для интегрированной проверки подлинности Microsoft Entra.

macOS

Системная библиотека Kerberos kinit поддерживает корпоративный субъект с параметром --enterprise. Она также неявно выполняет канонизацию имени, которая предотвращает использование альтернативных суффиксов имени субъекта-пользователя. Чтобы использовать альтернативные суффиксы имени участника-пользователя с интегрированной проверкой подлинности Microsoft Entra, установите более новую библиотеку brew install krb5 Kerberos и используйте ее kinit с параметром -E , как описано выше.