如何获取Azure存储帐户密钥
我想使用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.
是否有不同的资源我应该使用,不同的方法,或者它不可能?
要使用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}
请分享您正在使用的代码。如果您以自己的身份登录以获取令牌,也可以共享。最后,为您的第二个错误,请参阅此线程:http://stackoverflow.com/questions/35190866/error-making-azure-management-library-api-call-when-authenticating-with-azure-ac/35194706#35194706 。 HTH。 –
@ Bobcat100已解决此问题?如果您仍然有问题,请随时告诉我。 –