Подключите приложение IIS, работающее на виртуальной машине Azure (с включенным AAD DS), к Azure SQL с помощью встроенной аутентификации - PullRequest
0 голосов
/ 16 мая 2019

Я уже некоторое время пытаюсь разобраться с этой проблемой, и, к сожалению, я бью стену.

У нас есть 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';" />
...