用于 .NET 身份验证的 Azure SDK - 在哪里保存生成的服务主体?

Azure SDK for .NET authentication - where to keep the generated service principal?

我正在尝试了解如何在开发和生产期间使用 Azure 进行身份验证。

为了开发,我遵循了这里的说明:documentation

我现在有 Azure SDK 用于身份验证的文件和环境变量。

但是对于生产,我不知道该文件放在哪里。在这种情况下,生产本身就是一组使用 Azure SDK 的 Azure Functions。在文档中,服务主体存储在 C:\.

我是否应该放弃环境变量,而是将服务主体文件放在我的 src 目录中(当然,并将其从提交中排除),然后确保将文件复制到输出中,以便它是用于开发和生产?

var credentials = SdkContext.AzureCredentialsFactory
        .FromFile("service-principle.json"); // same dir as the Azure Function DLLs

正如 Thomas 提到的,您可以在 Azure 门户的 Azure 功能应用程序设置中添加设置。

然后您可以使用以下命令获取凭据。如何使用azure function appsettings,请参考这篇document

注意:添加后需要保存设置。然后我们可以使用 SdkContext.AzureCredentialsFactory.FromServicePrincipal(clientId, clientSecret, tenantId, environment: AzureEnvironment.AzureGlobalCloud); 来获取凭据。

下面是演示代码

var clientId = Environment.GetEnvironmentVariable("clientId");
var clientSecret = Environment.GetEnvironmentVariable("clientSecret");
var tenantId = Environment.GetEnvironmentVariable("tenantId");
var credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal(clientId, clientSecret, tenantId, environment: AzureEnvironment.AzureGlobalCloud);

不建议将凭据文件发布到 azure 函数,如果您仍想这样做的话。您可以使用 Azure 函数 kudu 工具。并且Azure函数D:\home是共享的,你可以上传你的服务-principle.json到你想要的文件夹。