Как подключить уже существующее. Net Core приложение к Azure SQL базе данных с управляемой идентификацией - PullRequest
0 голосов
/ 16 июня 2020

Каковы шаги для успешного подключения приложения к Azure SQL базе данных после настройки строки подключения и добавления пакета NuGet для проверки подлинности приложения.

1 Ответ

2 голосов
/ 17 июня 2020

Если вы хотите использовать Azure Managed Identity для подключения Azure SQL базы данных в проекте Net Core MVC, мы можем использовать пакет Microsoft.Data.SqlClient с SqlConnection.AccessToken.

Подробные инструкции приведены ниже.

  1. Создать MSI

  2. Настроить SQL База данных

    а. Используйте Azure Sql администратора AD для подключения Azure SQL vai SSMS

    b. Добавьте MSI в нужную базу данных

    USE [<db name>]
    GO
    create user [<your msi name>] from external provider
    ALTER ROLE db_owner ADD MEMBER [<function app name>]
    
  3. Код

 /*
             Install SDK Microsoft.Azure.Services.AppAuthentication and Microsoft.Data.SqlClient

*/

 public async Task<IActionResult> Index()
        {
            List<StarWar> starWars = new List<StarWar>();
            var connectionString = "Server=tcp:<server-name>.database.windows.net,1433;Database=<database-name>;";
            using (var conn = new SqlConnection(connectionString))
            {
                conn.AccessToken = await (new Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/");
                await conn.OpenAsync();
                var sql = "SELECT  * FROM [dbo].[StarWars]";
                using (SqlCommand command = new SqlCommand(sql, conn))
                {
                    using (SqlDataReader reader = await command.ExecuteReaderAsync())
                    {
                        while (await reader.ReadAsync())
                        {
                            StarWar starWar = new StarWar();
                            starWar.episode = Convert.ToInt32(reader["episode"]);
                            starWar.score = Convert.ToInt32(reader["score"]);
                            starWar.name = Convert.ToString(reader["name"]);
                            starWars.Add(starWar);
                        }
                    }

                }
            }


                return View(starWars);
        }

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...