Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法读取Azure密钥库';windows应用程序中的s密钥_Azure_Azure Keyvault_Secret Key - Fatal编程技术网

无法读取Azure密钥库';windows应用程序中的s密钥

无法读取Azure密钥库';windows应用程序中的s密钥,azure,azure-keyvault,secret-key,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 t

我们正在尝试通过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_u14.MoveNext()上 ---来自引发异常的上一个位置的堆栈结束跟踪--- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中 在Microsoft.Azure.KeyVault.KeyVaultCredential.d_u11.MoveNext()上 ---来自引发异常的上一个位置的堆栈结束跟踪--- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中 在Microsoft.Azure.KeyVault.KeyVaultCredential.d_u13.MoveNext()上 ---来自引发异常的上一个位置的堆栈结束跟踪--- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(任务任务) 在Microsoft.Azure.KeyVault.KeyVaultClient.d_u65.MoveNext()上 ---来自引发异常的上一个位置的堆栈结束跟踪--- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Azure.KeyVault.KeyVault ClientExtensions.d_u13.MoveNext()

上,windows应用程序需要有一个与之关联的Azure Active directory ID。 如果您阅读了密钥库的基本概念,则有2种建议的访问密钥库的方法。1)使用托管标识,其中尝试与密钥库交互/验证的应用程序需要具有Azure管理的标识。 2) 使用服务主体和证书对密钥库进行身份验证


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

确保您的解决方案中存在以下3个DLL。如果不是从nuget那里得到这些

  • Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll

  • Microsoft.Azure.KeyVault

  • Microsoft.Azure.Services.AppAuthentication


  • 提供商可能无法使用其身份验证方法。您需要在Visual Studio中运行该应用程序(并在选项中启用身份验证),或者您可以在运行该应用程序之前安装AZ CLI并登录到该应用程序(+选择正确的订阅)。您是否也可以提供错误消息本身?您只发布了stacktrace,而不是实际的邮件。这不是密钥库问题,而是身份验证问题。您如何登录Windows应用程序?如果您可以发布代码,这将更容易理解。还可以选择使用服务主体(注册的应用程序)。这将为您提供一个特定的身份,该身份始终用于访问机密的密钥库。请阅读此处的基本概念-同一段代码适用于一个用户,而不适用于另一个用户。这两个用户都存在于Azure Active directory中。唯一的区别是它所服务的用户在azure中创建了密钥库并添加了机密。代码不起作用的用户可以在azure portal中查看机密,但可以通过代码读取这些机密@Prashanth Y-如果存在与使用服务原则或证书进行身份验证相关的任何问题,则这两个用户的身份验证都将失败。@Manjushri您需要在azure密钥库中向用户b授予权限,谢谢。添加上述dll后,它工作正常。但是,当我删除对Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll的引用时,它不会使用我的凭据,而是使用其他凭据。我的问题是,这两个用户配置文件与Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll有什么区别?