DbUp SqlConnection AAD не работает?

Из соображений безопасности проверка подлинности SQL отключена, я могу войти только через Azure SPN. По ссылке ниже в C# мы можем подключиться:

https://techcommunity.microsoft.com/t5/azure-sql-database/azure-ad-service-principal-authentication-to-sql-db-code-sample/ba-p/481467

Как передать вышеуказанное успешное соединение аутентификации токена доступа в DbUp ниже program.cs?

var upgrader = DeployChanges.To.AzureSqlDataWarehouse(connectionString)
                            .WithScriptsEmbeddedInAssembly(Assembly.GetExecutingAssembly())
                            .LogToConsole()
                            .LogScriptOutput().WithExecutionTimeout(TimeSpan.FromSeconds(60))
                            .Build();
var result = upgrader.PerformUpgrade();

2 ответа

Не уверен, что вы решили эту проблему, но хотите дать подходящий ответ, поскольку это может помочь другим, ищущим такое же или подобное решение. Во-первых, глядя на DbUp, я не увидел никакой встроенной поддержки аутентификации Azure AD, но я думаю, что следующее - это то, что вы ищете.

Поддержка аутентификации на основе токенов для базы данных SQL Azure с использованием аутентификации Azure AD

В связанном блоге технического сообщества обсуждаются все методы Azure AD, которые вы можете использовать для аутентификации с помощью Azure SQL. Он содержит пример приложения (TokenReadme.Zip), демонстрирующего аутентификацию на основе токенов, где включенныйprogram.csпример в TokenReadme.docx выглядит следующим образом:

using System;
using System.Data;
using System.Data.SqlClient;

namespace ClinicService
  {
class Program
{
    static void Main()
    {
        SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
        builder["Data Source"] = "aad-managed-demo.database.windows.net"; // replace with your server name
        builder["Initial Catalog"] = "demo"; // replace with your database name
        builder["Connect Timeout"] = 30;

        string accessToken = TokenFactory.GetAccessToken();
        if (accessToken == null)
        {
            Console.WriteLine("Fail to acuire the token to the database.");
        }
        using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
        {
            try
            {
                connection.AccessToken = accessToken;
                connection.Open();
                Console.WriteLine("Connected to the database");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        Console.WriteLine("Please press any key to stop");
        Console.ReadKey();
    }
  }
}

Вы должны иметь возможность использовать пример TokenReadme, чтобы изменить решение DbUp .NET Library для использования аутентификации на основе токенов. С уважением, Майк

DbUp должен предоставлять логическое значение в вызове DeployChanges.To.AzureSqlDataWarehouse для внутреннего использования проверки подлинности маркера. К сожалению, вы не можете передать токен, который у вас уже есть.

      DeployChanges.To.AzureSqlDataWarehouse(connectionString,true)
Другие вопросы по тегам