Попытка заставить работать AAD и аутентификацию SQL Azure

Я пытаюсь настроить интегрированную проверку подлинности между моим приложением и Azure SQL. Приложение работает на виртуальной машине, которая присоединена к домену Azure AD (доменные службы) в IIS.

Я следил за этим официальным документом MS по настройке аутентификации: https://docs.microsoft.com/en-us/azure/sql-database/sql-database-aad-authentication-configure (обратите внимание: мы не используем управляемые экземпляры для SQL).

1) Группа администраторов была добавлена ​​через портал 2) Пользователь автономной базы данных (также часть группы администраторов) был создан в соответствии с документом. 3) Пул приложений IIS также работает под тем же пользователем.

Попытки подключиться к сайту возвращают эту ошибку:

[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

[AggregateException: One or more errors occurred.]
   System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) +4323177
   System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) +12865803
   System.Threading.Tasks.Task`1.get_Result() +33
   System.Data.SqlClient.<>c__DisplayClass134_1.<GetFedAuthToken>b__0() +39
   System.Threading.Tasks.Task`1.InnerInvoke() +121
   System.Threading.Tasks.Task.Execute() +47

[AggregateException: One or more errors occurred.]

Наш 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';" />

Мы надеемся, что сможем удалить любое упоминание паролей в виде обычного текста в нашем файле web.config, и аутентификация в лазурном режиме сможет это обеспечить.

Любая помощь будет оценена по достоинству!

РЕДАКТИРОВАТЬ: пытаясь начать все сначала, я перенес приложение на другую новую виртуальную машину Azure. На этот раз процесс изначально привел к этой ошибке:

Unable to load adalsql.dll (Authentication=ActiveDirectoryPassword). Error code: 0x2.

После установки .dll это приводит меня к той же ошибке, которую я опубликовал выше. Не уверен, может ли эта первоначальная ошибка пролить свет на основную проблему.




Ответы (2)


Сообщение об ошибке: «Встроенная проверка подлинности Windows поддерживается только в потоке федерации».

Если на портале выбрать «Azure Active Directory», а затем «Пользовательские доменные имена»

Есть ли у вас хотя бы одна строка в списке с выбранным "Основным"?

В этом случае вы можете попробовать добавить новый пользовательский домен, пометить его как федеративный, а затем использовать пользователя из этого домена для интегрированной аутентификации.

person Shiraz Bhaiji    schedule 23.05.2019

Еще раз проверьте, является ли виртуальная машина локальной или облачной, потому что, если ваш компьютер локальный и является присоединенным AD, вы должны увидеть его как устройство в Azure Active Directory. В противном случае, если компьютер не интегрирован с ADFS, вы получите сообщение об исключении «Встроенная проверка подлинности Windows поддерживается только в потоке федерации».

Есть два возможных решения: - Интегрировать машину в ADFS - Использовать пароль Active Directory с действующей учетной записью в Azure Active Directory.

В моем сценарии я не мог переместить машину, поэтому использую учетную запись AD.

person Rodrigo S. Teixeira    schedule 14.01.2020