Подключите приложение IIS, работающее на виртуальной машине Azure (с включенным AAD DS), к Azure SQL с помощью встроенной аутентификации
Я уже некоторое время пытаюсь разобраться с этой проблемой, и, к сожалению, я бью стену.
У нас есть Azure AD, настроенный с помощью доменных служб Azure. ВМ присоединяются к этому домену. У нас также есть база данных SQL Azure, к которой мы пытаемся подключиться из приложения IIS, работающего на виртуальной машине.
Я следовал официальным документам MS по этому вопросу ( https://docs.microsoft.com/en-us/azure/sql-database/sql-database-aad-authentication-configure), которые помогли проверить, могут ли удостоверения Azure AD подключаться к БД Azure SQL (я могу подключиться через SSMS к Azure SQL, используя пользователя Azure AD Admin. Затем я могу использовать этот идентификатор для генерации других содержащихся пользователей, что я и сделал).
Проблема существует, когда я пытаюсь аутентифицироваться с базой данных с Интеграцией Active Directory в моей строке соединения. Я получаю две ошибки. Сначала я получаю эту ошибку:
Unable to load adalsql.dll (Authentication=ActiveDirectoryPassword). Error code: 0x2.
Теперь я могу обойти это, установив библиотеку аутентификации AD для SQL. Однако, когда я это делаю, это приводит к этой ошибке:
[AdalException: Integrated Windows authentication supported only in federation flow.]
ADALNativeWrapper.ADALGetAccessToken(String username, IntPtr password, String stsURL, String servicePrincipalName, ValueType correlationId, String clientId, Boolean* fWindowsIntegrated, Int64& fileTime) +829
System.Data.SqlClient.<>c__DisplayClass2_0.<AcquireTokenAsync>b__0() +132
System.Threading.Tasks.Task`1.InnerInvoke() +121
System.Threading.Tasks.Task.Execute() +47
Теперь я не смог пройти мимо этого, и фактически прочитал множество вещей (хотя и ничего напрямую от MS), которые говорят, что это просто не поддерживается, и что мне нужно создать федерацию, чтобы это работало, что просто кажется совершенно необоснованным, учитывая, что это среда только для Azure.
Моя строка подключения в IIS web.config выглядит следующим образом:
name="LocalSqlServer" connectionString="Server=tcp:XXXXX;Initial Catalog=XXXXX;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication='Active Directory Integrated';" />
Я пробовал различные итерации этой строки подключения безрезультатно. Если кто-нибудь может дать некоторое представление об этом, я был бы очень признателен!
Спасибо!
РЕДАКТИРОВАТЬ: Одна вещь, которую я забыл упомянуть, пул приложений IIS работает как пользователь, который является частью группы AAD Domain в Azure AD и отдельным пользователем, созданным в БД.