azure function v 2.0 和 key vault
azure function v 2.0 and key vault
我的 azure 函数使用 Function 运行time 版本 2.0 编写,并试图从 azure key vault 中读取机密。
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 的函数和未 运行ning 的函数时出现错误。
仅供参考,相同的代码在 Azure Function V1.0 中运行良好。
知道我做错了什么吗?
错误是由Microsoft.IdentityModel.Clients.ActiveDirectory
的引用引起的。
它已在最新的函数运行时 2.0.11857
(aka cli 2.0.1-beta.29
)中修复。参见 this github issue and pull request。
门户网站上的发布已完成,但正如 release note 所说
This release has not yet been made available to Visual Studio users.
因此您可以手动下载 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)
我的 azure 函数使用 Function 运行time 版本 2.0 编写,并试图从 azure key vault 中读取机密。
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 的函数和未 运行ning 的函数时出现错误。
仅供参考,相同的代码在 Azure Function V1.0 中运行良好。
知道我做错了什么吗?
错误是由Microsoft.IdentityModel.Clients.ActiveDirectory
的引用引起的。
它已在最新的函数运行时 2.0.11857
(aka cli 2.0.1-beta.29
)中修复。参见 this github issue and pull request。
门户网站上的发布已完成,但正如 release note 所说
This release has not yet been made available to Visual Studio users.
因此您可以手动下载 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)