Я создал Azure договор аренды и настроен следующим образом:SQL Azure Встроенная проверка подлинности с облачной только Azure Active Directory не удается
Azure AD с:
- доменное имя простой пользовательский (менее чем 15 символов). DNS проверен и т. Д. Все хорошо.
- Пользователи и администраторы группы
- Пользователи в обеих группах
- VNET и DNS и IP-адреса
- Enabled Управление устройствами
- Включенные услуги домена и подключены к VNET
Обратите внимание, что в посылке нет ничего, это все в облаке. Мой физический ноутбук эффективно используется как скачок.
SQL-Azure базы данных и сервер с:
- правил брандмауэра открыты для всех необходимых входящих соединений
- Администратор Active Directory, установленных в качестве администраторов группы я создал в Azure AD
- Пользователи AD, созданные в SQL Azure, используя CREATE USER FROM EXTERNAL PROVIDER;
Я могу подключиться к базе данных SQL Azure из SSMS на своем ноутбуке, используя универсальную аутентификацию Active Directory или аутентификацию пароля Active Directory. Для обоих я получаю вызов за имя пользователя и пароль, как и следовало ожидать.
Цель: Я хочу, чтобы иметь возможность использовать встроенную проверку подлинности, так что может легко течь идентичность от а) машины, б) узле А ASP.NET MVC. Я не пробовал сценарий b да, так что давайте припаркуем это. В сценарии a я сделал следующее.
настроил Azure VM:
- Стандарт D2 - Windows 10 полностью исправлен
- Подключен к тому же VNET как домен
- SQL Management Server Сервер 2016 (SSMS) установлен (последняя и исправлен - 13.0.15700.28)
- ODBC 13,1 установлен (хотя я думаю, что это не имеет отношения)
- Адал
- Microsoft Online Услуги Sign-In Assistant для ИТ-специалистов RTW
Короче говоря, моя полная "окружающая среда" состоит из Azure AD, A SQL Azure БД и клиента VM.
Проблема: Я присоединяюсь к VM моей Azure Active Directory с помощью службы каталогов, выйти и войти в качестве действительного пользователя домена (действительного в AD и SQL Azure с соответствующими логинами и разрешениями). Когда я открываю SSMS, я могу нормально подключиться к Active Directory Universal Authentication или Active Directory Password Authentication, но когда я пытаюсь подключиться к проверке подлинности Active Directory, я получаю ошибку ниже. Это также происходит, если я присоединяюсь к виртуальной машине непосредственно к Azure AD. Мое развертывание - это 100% облако, поэтому федерации нет.
Поэтому у меня есть два вопроса:
- я упускаю что-то в моей конфигурации или захода на посадку или есть работа вокруг? It may be an existing issue - see here
- Будет ли эта связь (проходить) работать, если она закодирована в .net 4.6.2 с C# и развернута в облаке? Возможно, с драйвером ODBC 13.1?
Благодаря
===================================
Не удается подключиться к .database.windows.net.
===================================
Ошибка аутентификации пользователя NT Authority \ Анонимный вход в Active Каталог (аутентификация = ActiveDirectoryIntegrated). Код ошибки 0xCAA9001F; state 10 Встроенная проверка подлинности Windows поддерживает только в потоке федерации. (Поставщик .Net SqlClient Data)
------------------------------ Для получения справки нажмите: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=0&LinkId=20476
------------------------------ Имя сервера: .database.windows.net Номер ошибки: 0 Серьезность: 11 Состояние: 0 Процедура: ADALGetAccessToken
------------------------------ Программа Расположение:
в System.Data .SqlClient.SqlInternalConnectionTds..ctor (DbConnectionPoolIdentity identity, SqlConnectionString connectionOpti Дополнения, SqlCredential учетных данных, объект providerInfo, Струнный Новый_пароль, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool бассейн, String маркер доступа, булевы applyTransientFaultHandling) в System.Data.SqlClient.SqlConnectionFactory.CreateConnection (DbConnectionOptions варианты, DbConnectionPoolKey poolKey, объект poolGroupProviderInfo, DbConnectionPool бассейн, DbConnection owningConnection, DbConnectionOptions userOptions) в System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection (DBConnection owningConnection, DbConnection PoolGroup poolGroup, DbConnectionOptions userOptions) при System.Data.ProviderBase.DbConnectionFactory.TryGetConnection (DbConnection owningConnection, TaskCompletionSource
1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource
1 повторных попыток, DbConnectionOptions userOptions) при System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection (DbConnection outerConnection, DbConnectionFactory ConnectionFactory, TaskCompletionSource повторных попыток) при System.Data.SqlClient.SqlConnection.TryOpen (TaskCompletionSource`1 повторных попыток) при System.Data.SqlClient.SqlConnection.Open() на Microsoft.SqlServer.Management.SqlStudio.Explorer.ObjectExplorerService.ValidateConnection (UIConnectionInfo CI, сервер IServerType) в Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()
Спасибо @ Лин-Арт, я с нетерпением жду обмена обновлений. Знаете ли вы, если AAD-DS все еще находится на картинке для облачного сервиса (веб-приложения), поддерживающего SQL Azure? –
Отлично! WebApp? Хм, я бы не использовал это для веб-приложения. Для пользователя auth используйте AAD B2C, и если вам срочно нужен пользовательский доступ к sql db - вы можете подумать о безопасности на уровне строк, например, здесь: https://github.com/Azure/azure-content/blob/master/articles /app-service-web/web-sites-dotnet-entity-framework-row-level-security.md –
Эта ссылка близка к тому, что мне нужно, но не стартер. Мы вдаваемся в детали, но поток, которым я являюсь, заключается в следующем: пользователь переходит к сторонней онлайн-платформе, auths против федеративного Azure AD. Пользователь подключается из сторонней онлайн-платформы к SQL Azure и запускает запросы. Короче говоря, у меня нет контроля над веб-приложением, и вам нужно будет использовать стороннюю сторону для создания дублированной безопасности. Если идентичность протекала, тогда общая сложность того, что я хочу, значительно уменьшается и намного удобнее обслуживать. То, что я опубликовал в моем вопросе, настолько близко к идеалу, что мне больно начинать работать :) –