Функция Azure v 2.0 и хранилище ключей
Моя функция Azure написана с использованием Function Runtime Version 2.0 и пытается прочитать секреты из хранилища ключей Azure.
public class KeyVaultAccess
{
private const string VaulturL = "...";
private const string ClientId = "...";
private const string thumbprinT = "...";
public static string GetSecretIdentifier(string secretName)
{
string nextLink = VaulturL + "secrets" + "/" + secretName;
var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetAccessToken));
var getsecrets = Task.Run(async () => await keyVaultClient.GetSecretsAsync(VaulturL));
Task.WaitAll(getsecrets);
if (getsecrets.Result == null)
throw new Exception("Error retrieving secret name from key vault");
var secret = keyVaultClient.GetSecretAsync(nextLink).GetAwaiter().GetResult();
var GetSecretvalue = secret.Value;
return GetSecretvalue;
}
private static async Task<string> GetAccessToken(string authority, string resource, string scope)
{
var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
var clientcred = new ClientCredential(ClientId, thumbprinT);
var result = await context.AcquireTokenAsync(resource, clientcred);
return result.AccessToken;
}
}
Я упоминал ниже пакеты nuget в функции.
когда я запускаю функцию, используя VS локальный CLI, и функция не работает и получает ошибку.
К вашему сведению, тот же код отлично работает в Azure Function V1.0.
Любая подсказка, что я делаю не так здесь?
1 ответ
Ошибка вызвана ссылкой Microsoft.IdentityModel.Clients.ActiveDirectory
,
Это было исправлено в последней версии функции 2.0.11857
(иначе 2.0.1-beta.29
). Смотрите этот вопрос GitHub и запрос на получение.
Релиз завершен на портале, но, как говорится в примечании
Этот выпуск еще не был доступен пользователям Visual Studio.
Таким образом, вы можете загрузить cli beta.29 вручную (win-x64 или x86, в зависимости от вашей платформы) и настроить следующие параметры отладки.
Launch: Executable
Executable: C:\Program Files\dotnet\dotnet.exe (set your dotnet path)
Application Arguments: [yourclifolderpath]\Azure.Functions.Cli.win-x64\func.dll start
Working Directory: $(TargetDir)