从本地开发中的应用程序配置访问Azure Key Vault参考值

从本地开发中的应用程序配置访问Azure Key Vault参考值,azure,.net-core,azure-active-directory,azure-keyvault,azure-app-configuration,Azure,.net Core,Azure Active Directory,Azure Keyvault,Azure App Configuration,我遇到过Azure应用程序配置服务,它能够通过创建一个带有密钥库引用选项的新记录来链接Azure KeyVault中的机密 我已使用Microsoft extension进行应用程序配置,如中所述 已经完成的步骤 通过CMD-``az ad sp create for rbac-n-sdk auth创建服务原则 还通过CMD-az keyvault set policy-n-spn-secret permissions delete get list set-key permissions cr

我遇到过Azure应用程序配置服务,它能够通过创建一个带有密钥库引用选项的新记录来链接Azure KeyVault中的机密

我已使用Microsoft extension进行应用程序配置,如中所述

已经完成的步骤

通过CMD-``az ad sp create for rbac-n-sdk auth创建服务原则 还通过CMD-az keyvault set policy-n-spn-secret permissions delete get list set-key permissions create decrypt delete encrypt get list unwrapKey wrapKey向创建的服务提供商授予权限 在环境变量中设置客户端id和密码

方法实现

    public static IHostBuilder CreateHostBuilder(string[] args) =>
                    Host.CreateDefaultBuilder(args)
                    .ConfigureWebHostDefaults(webBuilder =>
                     webBuilder.ConfigureAppConfiguration((hostingContext, config) =>
                     {
                         var settings = config.Build();

                         config.AddAzureAppConfiguration(options =>
                         {
                             options.Connect(settings["ConnectionStrings:AppConfig"])
                                     .ConfigureKeyVault(kv =>
                                     {
                                         kv.SetCredential(new DefaultAzureCredential());
                                     });
                         });
                     })
                     .UseStartup<Startup>());
        }

任何帮助都将不胜感激: 谢谢

当使用DefaultAzureCredential时,它将首先尝试为Azure上的服务推荐的托管标识,最终尝试为应用程序服务上的流程以及本地开发设置以下环境变量的服务主体-可能不同,只要服务主体ID具有适当的权限:

AZURE\u租户\u ID:租户ID AZURE\u客户端\u ID:服务主体ID AZURE_客户端_密码:仅在创建服务主体后才显示的服务主体密码 您还可以使用Azure.Identity的新预览,它支持在开发计算机上更常见和更易于使用的其他身份验证方案,例如Azure CLI az登录、Visual Studio和Visual Studio代码。

使用DefaultAzureCredential时,它将首先尝试为Azure上的服务推荐的托管身份,最终,需要为应用程序服务上的流程以及本地开发设置以下环境变量的服务主体可能会有所不同,只要服务主体ID具有适当的权限:

AZURE\u租户\u ID:租户ID AZURE\u客户端\u ID:服务主体ID AZURE_客户端_密码:仅在创建服务主体后才显示的服务主体密码

您还可以使用Azure.Identity的新预览,它支持在开发机器上更常见和更易于使用的其他身份验证方案,例如Azure CLI az登录、Visual Studio和Visual Studio代码。

问题是,Visual Studio由于某种原因无法获取环境变量,因此无法随请求一起发送,当我以管理员身份运行Visual Studio时,问题是Visual Studio由于某种原因无法获取环境变量,因此无法随请求一起发送,一旦我以管理员身份运行Visual Studio,它就会从错误消息中运行

,客户端密码似乎无效。您在环境中是否有正确的值:$Env:AZURE\u CLIENT\u SECRET?从错误消息看,客户端密码似乎无效。您在环境中是否有正确的值:$Env:AZURE\u CLIENT\u SECRET?谢谢您的回答,但我已经这样做了,但它不起作用,最终我遇到了问题,因为某种原因Visual Studio无法检索Env变量,所以我只是以管理员身份运行VS,如果Visual Studio在设置环境变量之前正在运行,您需要重新启动它,以便进程将其拾取。您通常不需要以管理员身份运行Visual Studio。这应该是公认的答案。感谢您的回答,但我已经这样做了,但它不起作用,最终我遇到了问题,原因是Visual Studio无法检索环境变量,所以我只是以管理员的身份运行VS。如果VisualStudio在设置环境变量之前正在运行,那么您需要重新启动它,以便进程提取它们。您通常不需要以管理员的身份运行Visual Studio。这应该是公认的答案。在我看来,@Heath的答案应该在这里被接受。他所说的环境变量是正确的。如果在VisualStudio运行时设置了环境变量,则必须重新启动进程以获取它们。大多数应用程序不会处理广播消息来重新读取环境变量,对于VS等应用程序,它们由许多子进程组成,这些子进程也需要重新读取这些变量或获得不一致的结果。您作为管理员运行它的事实可能与它的工作关系不大,而与刚刚启动一个新进程的工作关系不大。我在想,当主机运行时,因为它是net core,它将始终引用环境变量。我没有意识到它在使用进程,感谢@Heath的澄清。进程默认继承其父进程的环境变量,因此如果.NET核心编译器是由VS启动的,比如说,构建和/或调试,那么这些环境变量将被继承。此外,dotnetcli可能会生成保存变量的构建服务器,因此,如果看起来您正在变老
行为,运行dotnet build sever shutdown以强制它们使用已更改的环境变量重新打包。请记住,如果您从系统控制面板或setx等应用程序更改了环境变量,您的终端应用程序可能也必须重新启动。我的拙见是,@Heath的答案应该在这里被接受。他所说的环境变量是正确的。如果在VisualStudio运行时设置了环境变量,则必须重新启动进程以获取它们。大多数应用程序不会处理广播消息来重新读取环境变量,对于VS等应用程序,它们由许多子进程组成,这些子进程也需要重新读取这些变量或获得不一致的结果。您作为管理员运行它的事实可能与它的工作关系不大,而与刚刚启动一个新进程的工作关系不大。我在想,当主机运行时,因为它是net core,它将始终引用环境变量。我没有意识到它在使用进程,感谢@Heath的澄清。进程默认继承其父进程的环境变量,因此如果.NET核心编译器是由VS启动的,比如说,构建和/或调试,那么这些环境变量将被继承。此外,dotnet CLI可能会生成保留变量的生成服务器,因此,如果您的行为越来越旧,请运行dotnet build sever shutdown,以强制它们使用更改的环境变量重新打包。请记住,如果您从系统控制面板或setx等应用程序更改了环境变量,您的终端应用程序可能也必须重新启动。
{"error":"invalid_client","error_description":"AADSTS7000215: Invalid client secret is provided.\r\nTrace ID: \r\nCorrelation ID: \r\nTimestamp: 2020-05-27 22:59:52Z","error_codes":[7000215],"timestamp":"2020-05-27 22:59:52Z","trace_id":"","correlation_id":"","error_uri":"https://login.microsoftonline.com/error?code=7000215"}

Headers:
Cache-Control: no-store, no-cache
Pragma: no-cache
Strict-Transport-Security: REDACTED
X-Content-Type-Options: REDACTED
x-ms-request-id: REDACTED
x-ms-ests-server: REDACTED
P3P: REDACTED
Set-Cookie: REDACTED
Date: Wed, 27 May 2020 22:59:51 GMT
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 471