Azure SDK使用CLI Creds或托管身份

时间:2020-05-18 11:40:18

标签: azure azure-sdk-.net azure-sdk azure-managed-identity

使用AWS时,如果您使用aws configure登录,则可以使用AWS SDK,而无需从本地计算机公开任何编程语言的凭证。如果稍后在AWS内部运行任何东西(Lambda,EC2等),则完全相同的代码会使用资源分配的IAM角色,而无需进行任何配置。

我尝试将其与Azure一起使用,我认为Azure.Identity.DefaultAzureCredential可以做到这一点。但是我什至不能在本地运行代码:

            var blobServiceClient = new BlobServiceClient(storageUri, new DefaultAzureCredential());
            var containerClient = await blobServiceClient.CreateBlobContainerAsync("test-container");

如何获取BlobServiceClient并使用本地计算机上的CLI凭据进行身份验证,如果在AppService中运行,则如何获得托管身份。

1 个答案:

答案 0 :(得分:1)

在您所使用的方案中,DefaultAzureCredentialBlobServiceClient是最佳选择,但它不使用CLI凭据进行身份验证。

要使其工作,只需将Environment variables设置为服务主体的AZURE_CLIENT_IDAZURE_TENANT_IDAZURE_CLIENT_SECRET。在Azure中,它使用MSI进行身份验证。


如果要使用CLI凭据进行身份验证,则有AzureServiceTokenProvider,它也可以访问Azure存储,但不能与BlobServiceClient一起使用,则需要使用以下命令获取访问令牌资源https://storage.azure.com

var azureServiceTokenProvider2 = new AzureServiceTokenProvider();
string accessToken = await azureServiceTokenProvider2.GetAccessTokenAsync("https://storage.azure.com").ConfigureAwait(false);

然后使用访问令牌调用Storge REST API,我认为第一种选择更方便,使用哪种选择取决于您。