2017-08-31 5 views
0

ich den folgenden Code versucht haben, ein neues Speicherkonto in Azure zu erstellen:Azure - Programmatically Speicher Konto erstellen

Erste das Token (Erfolg - erhielt ich einen Token):

var cc = new ClientCredential("clientId", "clientSecret"); 
var context = new AuthenticationContext("https://login.windows.net/subscription"); 
var result = context.AcquireTokenAsync("https://management.azure.com/", cc); 

Cloud-Speicher erstellen Anmeldeinformationen:

var credential = new TokenCloudCredentials("subscription", token); 

erstellen Sie die Cloud-Speicher-Konto (nicht):

using (var storageClient = new StorageManagementClient(credentials)) 
{ 
    await storageClient.StorageAccounts.CreateAsync(new StorageAccountCreateParameters 
    { 
     Label = "samplestorageaccount", 
     Location = LocationNames.NorthEurope, 
     Name = "myteststorage", 
     AccountType = "RA-GRS" 
    }); 
} 

Fehler:

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

Ich bin nicht sicher, ob dies einer jener irreführenden Botschaften ist oder wenn ich etwas in Azure falsch konfigurierte?

+1

Bitte, wenn dies Ihre Frage beantwortet: https://stackoverflow.com/questions/35190866/error-making-azure-management-library-api-call-when-authenticating-with-azure-ac/ 35194706 # 35194706. –

+0

@GauravMantri vielen Dank - der Link lieferte Einblicke in den Erwerb der richtigen Bezeichner –

Antwort

1

Soweit ich weiß, bieten azure jetzt zwei Arten von Speicher verwalten Bibliothek.

Microsoft.Azure.Management.Storage und Microsoft.WindowsAzure.Management.Storage

Microsoft.Azure.Management.Storage verwendet, um neue Speicher Arm

Microsoft.WindowsAzure.Management.Storage erstellen wird verwendet, um klassischen Asm Speicher zu erstellen

Ich denke, Sie möchten den neuen Arm Speicher erstellen, aber Sie verwendet die Bibliothek "Microsoft.WindowsAzure.Management.Storage". Da "Microsoft.WindowsAzure.Management.Storage" das Zertifikat verwendet, um die Anforderung zu autorisieren, erhalten Sie den Fehler. Wenn Sie wissen möchten, wie Sie "Microsoft.WindowsAzure.Management.Storage" verwenden, um klassischen Speicher zu erstellen, schlage ich vor, dass Sie auf diese article verweisen können.

Ich nahm an, dass Sie neue Arm Speicher erstellen möchten, ich schlage vor, Sie könnten das "Microsoft.Azure.Management.Storage" Nugget-Paket installieren.

Weitere Details können Sie auf diese Codes beziehen. siehe

static void Main(string[] args) 
    { 
     var subscriptionId = "your subscriptionId"; 
     var clientId = "your client id"; 
     var tenantId = "your tenantid"; 
     var secretKey = "secretKey"; 
     StorageManagementClient StorageManagement = new StorageManagementClient(new Microsoft.Azure.TokenCloudCredentials(subscriptionId, GetAccessToken(tenantId, clientId, secretKey))); 

      var re= StorageManagement.StorageAccounts.CreateAsync("groupname", "sotrage name",new Microsoft.Azure.Management.Storage.Models.StorageAccountCreateParameters() { 
       Location = LocationNames.NorthEurope, 
      AccountType = Microsoft.Azure.Management.Storage.Models.AccountType.PremiumLRS 
      },new CancellationToken() { }).Result; 


      Console.ReadKey(); 


    } 


     static string GetAccessToken(string tenantId, string clientId, string secretKey) 
    { 
     var authenticationContext = new AuthenticationContext($"https://login.windows.net/{tenantId}"); 
     var credential = new ClientCredential(clientId, secretKey); 
     var result = authenticationContext.AcquireTokenAsync("https://management.core.windows.net/", 
      credential); 

     if (result == null) 
     { 
      throw new InvalidOperationException("Failed to obtain the JWT token"); 
     } 

     var token = result.Result.AccessToken; 
     return token; 
    } 
+0

Wie ein Chef! Danke ... Mir war nicht bewusst, dass ich eine "falsche" Speicherverwaltungsbibliothek verwendete. Klappt wunderbar! –