Я хочу запросить базу данных SQL Azure из функции Azure, выполняющейся на моем компьютере при отладке с использованием управляемых удостоверений (т. Е. Удостоверения моего пользователя, подключенного к Visual Studio, вместо указания UserId и пароля в строке подключения).
Я следил за этим руководством в документации Microsoft, поэтому у моего Azure SQL Server есть пользователь AD в качестве администратора, что позволило мне предоставить права (db_datareader) группе Azure AD, которую я создал с помощью своего идентификатора функции Azure и моего пользователя в ней (а также моего приложения-функции, развернутого в Лазурный).
Если я разверну и запустил в Azure свою функцию Azure, она сможет запрашивать мою базу данных, и все будет работать нормально. Но когда я запускаю свою функцию Azure локально, у меня возникает следующая ошибка:
Не удалось войти в систему для пользователя NT AUTHORITY \ ANONYMOUS LOGON.
Код моей функции следующий:
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "test")] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
using (var connection = new SqlConnection(Environment.GetEnvironmentVariable("sqlConnectionString")))
{
connection.AccessToken = await (new AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net");
log.LogInformation($"Access token : {connection.AccessToken}");
try
{
await connection.OpenAsync();
var rows = await connection.QueryAsync<Test>("select top 10 * from TestTable");
return new OkObjectResult(rows);
}
catch (Exception e)
{
throw e;
}
}
}
Код правильно извлекает токен, ошибка возникает в строке await connection.OpenAsync()
.
Если я открою базу данных в Azure Data Studio с тем же пользователем, что и пользователь, подключенный к Visual Studio (который является членом группы AD с правами на базу данных), я могу подключиться и запросить базу данных без каких-либо проблем.
Это известная проблема или мне что-то здесь не хватает?
sqlConnectionString
при локальном запуске? - person Turbo   schedule 14.08.2019local.settings.json
файле: sqlConnectionString: Server = tcp: myservername.database.windows.net, 1433; Initial Catalog = mydatabasename ;, - person TechWatching   schedule 14.08.2019