Ошибка входа в систему для пользователя «NT AUTHORITY\ANONYMOUS LOGON». - MSI (управляемое удостоверение)

Я выполнил руководство это, чтобы защитить подключение к базе данных SQL Azure из службы приложений с помощью управляемого удостоверения.

В Azure все работает, как и ожидалось, но когда я пытаюсь отладить код локально, я получаю следующее сообщение об ошибке при открытии соединения.

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.

Я нашел несколько ссылок, в которых упоминалось, что мы можем использовать расширение «Azure Service Authentication» для локальной отладки.

Ошибка входа в систему для пользователя «NT AUTHORITY\ANONYMOUS LOGON». - MSI (управляемое удостоверение)

Я вошел в свою учетную запись 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);
}

Другие детали:

  • Сообщество Visual Studio 2019 — версия 16.1.0, предварительная версия 3.0
  • .NET Core 2.2

ОБНОВЛЕНИЕ 1: Сообщение Этот о параметре connectionString для класса AzureServiceTokenProvider. Я пытался указать значение RunAs=Developer; DeveloperTool=VisualStudio для connectionString, но все еще сталкивался с той же проблемой.

Пожалуйста, выложите код вместо скриншота. Убедитесь, что вы не указываете какие-либо учетные данные в самой строке подключения, а также что учетная запись имеет доступ к базе данных.

Peter Bons 21.05.2019 15:27

Спасибо, эта учетная запись имеет доступ к базе данных. Когда он развернут в Azure Webapp, он работает, как и ожидалось. Но у меня возникают проблемы при отладке локально.

user2243747 21.05.2019 15:38

Итак, вы добавили доступ к своей учетной записи Microsoft в БД?

juunas 23.05.2019 07:00

@juunas Я обновил ответ ниже. Пожалуйста, взгляните на ОБНОВЛЕНИЕ 1

user2243747 26.05.2019 09:49
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
4
1 393
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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:

Я выполнил следующие шаги, чтобы заставить его работать. Дайте мне знать, если существует какое-либо другое возможное решение

  1. Создал группу AAD, например. 'hemantdotnetcore1'
  2. Добавьте пользователей в эту группу (как правило, эти пользователи будут разработчиками в среде DEV, которые хотят получить доступ к базе данных во время разработка )

  1. Перейдите к экземпляру SQL-сервера и установите «Active Directory админ. В этом примере я добавил 'hemantdotnetcore1' в качестве администратор активного каталога.

  1. В Visual Studio перейдите к «Azure Service Authentication» и войдите в систему с любым пользователем, который является частью группы 'hemantdotnetcore1' который является моим администратором Azure Active Directory.
  2. Теперь я могу использовать ток ниже, чтобы открыть соединение с SQL Server.

    sql.AccessToken = (новый AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/").Result;

Вы должны опубликовать ответ здесь, а не просто ссылку. Ссылка может не работать в будущем.

juunas 23.05.2019 07:00

Другие вопросы по теме

Похожие вопросы