我正在尝试了解如何在开发和生产期间使用Azure进行身份验证。
为了开发,我按照这里的说明:documentation
我现在有一个Azure SDK用于身份验证的文件和环境变量。
但是对于生产我不知道把这个文件放在哪里。在这种情况下,生产本身就是一组使用Azure SDK的Azure功能。在文档中,服务主体存储在C:\
上。
我应该放弃环境变量,而是将服务主体文件放在我的src
目录中(并将其从提交中排除),然后确保将文件复制到输出中,以便它可用于开发和生产吗?
var credentials = SdkContext.AzureCredentialsFactory
.FromFile("service-principle.json"); // same dir as the Azure Function DLLs
正如Thomas所说,您可以在Azure门户中的Azure功能appsetting中添加该设置。
然后您可以使用以下命令获取凭据。如何使用azure功能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);
如果您仍想这样做,建议不要将Credentials文件发布到azure函数。您可以使用Azure功能kudu工具。并且Azure功能D:\ home是共享的,您可以将service-principle.json上传到您想要的文件夹。