DbUp SqlConnection AAD не работает?
Из соображений безопасности проверка подлинности SQL отключена, я могу войти только через Azure SPN. По ссылке ниже в C# мы можем подключиться:
Как передать вышеуказанное успешное соединение аутентификации токена доступа в 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, но я думаю, что следующее - это то, что вы ищете.
В связанном блоге технического сообщества обсуждаются все методы 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)