0

我想使用 C# 将文件上传到自动生成的 Azure 存储帐户(作为 Service Fabric 资源组的一部分,具有已知名称)。

我需要将文件作为 blob 上传以使其公开可用。

教程使用 .NET 开始使用 Azure Blob 存储使用存储在 App.config 文件中的连接字符串。由于我想使用即将生成的存储帐户,所以我不能使用这种方法。

首选方法是使用用户的 AD 以获取存储帐户的密钥。

此链接:Get Storage Account Key展示了如何通过 Rest 请求获取它,所以我想有一种方法可以使用 C# 代码来完成。

在我看来,该解决方案正在使用具有 StorageAccounts 属性的 StorageManagementClient,尽管我找不到使用 AzureAd 对其进行身份验证的方法。

我尝试使用AuthenticationContext.AcquireTokenAsync,并为不同的资源获取令牌,例如:https://management.azure.com/,但是在使用令牌时,出现以下错误:

Microsoft.WindowsAzure.CloudException: AuthenticationFailed: The JWT token does not contain expected audience uri 'https://management.core.windows.net/'.

使用资源时https://management.core.windows.net/出现不同的错误:

Microsoft.WindowsAzure.CloudException: ForbiddenError: The server failed to authenticate the request. Verify that the certificate is valid and is associated with this subscription.

我应该使用不同的资源,不同的方法,还是不可能?

4

1 回答 1

4

要使用存储服务管理 REST,我们需要指定资源来https://management.core.windows.net/代替https://management.azure.com/. 这是使用经典存储帐户的操作。

https://management.azure.com/Azure REST 服务的新终结点。如果要处理新的存储帐户,则需要使用此资源。以下是使用新 Azure REST 的示例,供您参考:

POST: https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resrouceGroupName}/providers/Microsoft.Storage/storageAccounts/{storageAccountName}/listKeys?api-version=2016-01-01
Authorization: Bearer {token}
于 2016-12-16T10:19:49.193 回答