Я выполнил руководство это, чтобы защитить подключение к базе данных SQL Azure из службы приложений с помощью управляемого удостоверения.
В Azure все работает, как и ожидалось, но когда я пытаюсь отладить код локально, я получаю следующее сообщение об ошибке при открытии соединения.
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
Я нашел несколько ссылок, в которых упоминалось, что мы можем использовать расширение «Azure Service Authentication» для локальной отладки.
Я вошел в свою учетную запись Azure в расширении 'Azure Service Authentication'
. Но все же я получаю сообщение об ошибке.
public IActionResult GetData()
{
var result = "connection opened.";
var test = config.GetSection("ConnectionStrings")["MyDbConnection"];
SqlConnection sql = new SqlConnection();
sql.ConnectionString = test;
sql.AccessToken = (new AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/").Result; //No issues while fetching the token.
try
{
//Getting exception here when running locally...
//Same code is working in Azure Webapp.
sql.Open();
}
catch (Exception ex)
{
result = $"Error : {ex.Message}";
}
finally
{
if ( sql != null && sql.State == System.Data.ConnectionState.Open )
{
sql.Close();
}
}
return Ok(result);
}
Другие детали:
ОБНОВЛЕНИЕ 1:
Сообщение Этот о параметре connectionString
для класса AzureServiceTokenProvider
. Я пытался указать значение RunAs=Developer; DeveloperTool=VisualStudio
для connectionString
, но все еще сталкивался с той же проблемой.
Спасибо, эта учетная запись имеет доступ к базе данных. Когда он развернут в Azure Webapp, он работает, как и ожидалось. Но у меня возникают проблемы при отладке локально.
Итак, вы добавили доступ к своей учетной записи Microsoft в БД?
@juunas Я обновил ответ ниже. Пожалуйста, взгляните на ОБНОВЛЕНИЕ 1
Получил ответ ниже на Форум Майкрософт
Привет Хемант
На скриншоте видно, что вы вошли в Visual Studio со своим Live ID.
Создана ли база данных в арендаторе, связанном с рабочей учетной записью?
Какой пользователь назначен администратором AAD на Azure SQL Server?
Учетная запись пользователя, с которой вы вошли в VS, должна быть добавлена в качестве пользователя в базу данных, чтобы аутентификация работала.
Кроме того, в той же статье, на которую вы ссылались, есть раздел, в котором рассказывается о создании группы AAD и предоставлении соответствующих разрешений.
Вы также можете добавить своего пользователя в группу AAD.
Пожалуйста, дайте нам знать, если у вас есть дополнительные вопросы.
Предложено в качестве ответа Kalyan Chanumolu-MSFTMicrosoft сотрудник, модератор 22 мая 2019 г. 3:55 Помечено в качестве ответа Hemant.Shelar 22 мая 2019 г. 4:22 22 мая 2019 г., 3:55
Примечание: Мне удалось это сделать, создав группу AAD и предоставив соответствующие разрешения.
ОБНОВЛЕНИЕ 1:
Я выполнил следующие шаги, чтобы заставить его работать. Дайте мне знать, если существует какое-либо другое возможное решение
'hemantdotnetcore1'
'hemantdotnetcore1'
в качестве
администратор активного каталога.Теперь я могу использовать ток ниже, чтобы открыть соединение с SQL Server.
sql.AccessToken = (новый AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/").Result;
Вы должны опубликовать ответ здесь, а не просто ссылку. Ссылка может не работать в будущем.
Пожалуйста, выложите код вместо скриншота. Убедитесь, что вы не указываете какие-либо учетные данные в самой строке подключения, а также что учетная запись имеет доступ к базе данных.