2017-09-28 6 views
0

Je suis en train de se connecter à mon serveur SQL en bleu azur et la liste des BDs une application .net, mais je continue à obtenirAzure SqlManagementClient - interdite aux TokenCloudCredentials

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

même si je suis en train d'utiliser le client Sql Management avec TokenCloudCredentials.

var authContext = new AuthenticationContext(authority); 
var clientCredential = new ClientCredential(clientId, appKey); 
var result = authContext.AcquireTokenAsync(resource, clientCredential).Result; 
var credentials = new Microsoft.Azure.TokenCloudCredentials(subscriptionId, result.AccessToken); 
var client = new SqlManagementClient(credentials); 
try 
    { 
     var servers = await client.Servers.ListAsync(); 
    } 
    catch (CloudException c) 
    { 
     Console.WriteLine(c.Message); 
     throw; 
    } 

L'application AD dispose d'autorisations pour accéder au groupe de ressources et à l'API Azure Management. Des idées pour lesquelles il continue à se plaindre d'un certificat, tout en utilisant un token?

EDIT: J'ai réussi à le faire en utilisant la "nouvelle" API de gestion fluide. Vous devez créer une application AD associée à l'abonnement et avoir accès au groupe de ressources. Ensuite, créez simplement des informations d'identification et initialisez l'API courante.

using Microsoft.Azure.Management.Fluent; 
using Microsoft.Azure.Management.ResourceManager.Fluent; 
using Microsoft.Azure.Management.ResourceManager.Fluent.Authentication; 
using Microsoft.Azure.Management.ResourceManager.Fluent.Core; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace AzureManagement 
{ 
    public class Program 
    { 
     public static void Main(string[] args) 
     { 
      var azureCredentials = new AzureCredentials(new 
       ServicePrincipalLoginInformation 
      { 
       ClientId = "clientId", 
       ClientSecret = "clientSecret=" 
      }, "tenantId", AzureEnvironment.AzureGlobalCloud); 

      var _azure = Azure 
      .Configure() 
      .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic) 
      .Authenticate(azureCredentials) 
      .WithSubscription("subscriptionId"); 

      var sql = _azure.SqlServers.List().ToList(); 
      foreach (var s in sql) 
      { 
       var dbs = s.Databases.List().ToList(); 
      } 
      Console.ReadLine(); 
     } 
    } 
} 

Répondre

1

Je ne suis pas sûr si cela est pris en charge. Veuillez créer un cas de support pour ce problème.