我们正在尝试通过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()
答案 0 :(得分:1)
确保解决方案中存在以下3个dll。如果不是从nuget那里获得
Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll
Microsoft.Azure.KeyVault
Microsoft.Azure.Services.AppAuthentication
答案 1 :(得分:0)
Windows应用程序需要具有与其关联的Azure Active Directory ID。 如果您阅读Key Vault的基本概念,则有2种推荐的访问Key Vault的方法。 1)使用托管身份,其中尝试与Key Vault进行交互/身份验证的应用程序需要具有由Azure管理的身份。 2)使用服务主体和证书对Key Vault进行身份验证。
在这种情况下,如果它是在本地运行的Windows应用程序,则需要使用服务主体和证书对密钥库进行身份验证。