0

我想使用C#将文件上载到自动生成的Azure存储帐户(作为Service Fabric资源组的一部分,名称已知)。如何获取Azure存储帐户密钥

我需要将文件上传为blob以允许它公开。

本教程Get started with Azure Blob storage using .NET使用存储在App.config文件中的连接字符串。 由于我想使用待生成的存储帐户,因此我无法使用这种方法。

优先方法是以某种方式使用用户的AD以获取存储帐户的密钥。

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

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

我试着用AuthenticationContext.AcquireTokenAsync,并aquiring为diffenent资源令牌,例如: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. 

是否有不同的资源我应该使用,不同的方法,或者它不可能?

+0

请分享您正在使用的代码。如果您以自己的身份登录以获取令牌,也可以共享。最后,为您的第二个错误,请参阅此线程:http://stackoverflow.com/questions/35190866/error-making-azure-management-library-api-call-when-authenticating-with-azure-ac/35194706#35194706 。 HTH。 –

+0

@ Bobcat100已解决此问题?如果您仍然有问题,请随时告诉我。 –

回答

2

要使用Storage Service Management REST,我们需要指定资源为https://management.core.windows.net/而不是https://management.azure.com/。这是使用经典的存储帐户。

https://management.azure.com/Azure REST service的新端点。如果您想处理新的存储帐户,则需要使用此资源。以下是使用新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} 
相关问题