Я уже некоторое время пытаюсь разобраться с этой проблемой, и, к сожалению, я бью стену.
У нас есть 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. I затем можно использовать этот идентификатор для создания других содержащихся пользователей, что я и сделал).
Проблема возникает, когда я пытаюсь пройти аутентификацию с базой данных с помощью интеграции Active Directory в строке подключения. Я получаю две ошибки, которые я собираюсь включить ниже.
Теперь я не смог пройти мимо последнего (заявив, что федерация необходима), и на самом деле прочитал множество вещей (хотя и ничего напрямую от MS), которые говорят, что это просто не поддерживается и что мне нужно создать федерацию, чтобы это работало, что кажется совершенно неразумным, учитывая, что это среда только для Azure.
Строка подключения также включена ниже.
Я пробовал разные итерации этой строки соединения безрезультатно. Если кто-нибудь может дать некоторое представление об этом, я был бы очень признателен!
И последнее: пул приложений IIS работает как пользователь, который является частью группы AAD Domain в Azure AD, и как отдельный пользователь, созданный в БД.
Спасибо!
Я пробовал различные итерации строки подключения, включая удаление большей части дополнительных параметров в строке подключения и кавычек.
Я пробовал разных пользователей в пуле приложений
Конечная цель - удалить все текстовые PW из строки подключения к Azure SQL.
Первая ошибка:
Unable to load adalsql.dll (Authentication=ActiveDirectoryPassword). Error code: 0x2.
Вторая ошибка:
[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
Строка подключения:
name="LocalSqlServer" connectionString="Server=tcp:XXXXX;Initial Catalog=XXXXX;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication='Active Directory Integrated';" />