无法通过Windows应用程序读取Azure Key Vault的密钥

时间:2018-12-19 10:03:55

标签: azure azure-keyvault secret-key

我们正在尝试通过Windows应用程序(而不是任何Azure应用程序/资源)读取Azure Key Vault的机密。 这是我们正在努力实现的目标–

1. Created key vault 
2.  Added secret
3.  Added user (Azure AD User) to access policies and given required permissions.
4.  Running a windows application (not azure) to get those keys and getting error. (User who is running this application has already been added to access policies of key vault)

以下是错误

Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProvider.d__14.MoveNext()上的

---从之前引发异常的位置开始的堆栈结束跟踪---    在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)    在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)    在Microsoft.Azure.KeyVault.KeyVaultCredential.d__11.MoveNext() ---从之前引发异常的位置开始的堆栈结束跟踪---    在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)    在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)    在Microsoft.Azure.KeyVault.KeyVaultCredential.d__13.MoveNext() ---从之前引发异常的位置开始的堆栈结束跟踪---    在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)    在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)    在System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(任务任务)    在Microsoft.Azure.KeyVault.KeyVaultClient.d__65.MoveNext() ---从之前引发异常的位置开始的堆栈结束跟踪---    在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)    在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)    在Microsoft.Azure.KeyVault.KeyVaultClientExtensions.d__13.MoveNext()

2 个答案:

答案 0 :(得分:1)

确保解决方案中存在以下3个dll。如果不是从nuget那里获得

  1. Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll

  2. Microsoft.Azure.KeyVault

  3. Microsoft.Azure.Services.AppAuthentication

答案 1 :(得分:0)

Windows应用程序需要具有与其关联的Azure Active Directory ID。 如果您阅读Key Vault的基本概念,则有2种推荐的访问Key Vault的方法。 1)使用托管身份,其中尝试与Key Vault进行交互/身份验证的应用程序需要具有由Azure管理的身份。 2)使用服务主体和证书对Key Vault进行身份验证。

在这种情况下,如果它是在本地运行的Windows应用程序,则需要使用服务主体和证书对密钥库进行身份验证。