Authentification de demandes de gestion des services

Mis à jour: avril 2015

Les demandes adressées au service de gestion doivent être authentifiées à l'aide de l'une des méthodes suivantes :

Il est possible d'authentifier les demandes sécurisées adressées au service de gestion en créant une application Azure AD, puis en utilisant la Active Directory Authentication Library pour obtenir un jeton d'accès de l'application. Pour plus d'informations sur l'authentification à l'aide d'Azure AD, consultez Scénarios d'authentification pour Azure AD.

Pour ajouter une application à Azure AD, procédez comme suit :

  1. Connectez-vous au portail de gestion Azure.

  2. Au bas du menu de gauche, cliquez sur Active Directory, puis sur Répertoire par défaut.

  3. Dans la page Répertoire par défaut, sous Intégrer des applications, cliquez sur Ajoutez une application que vous développez.

    Ajouter une application Azure AD
  4. Entrez le nom de l'application, sélectionnez APPLICATION CLIENTE NATIVE, puis cliquez sur la flèche droite.

    Spécifier un nom pour l'application
  5. Entrez l'URI de l'application, puis cliquez sur la coche. L'URI inclut le nom de l'application, précédé par http://localhost/.

    Entrer l'URL de redirection
  6. Une fois l'application créée, vous devez ajouter l'autorisation lui permettant d'accéder aux API de gestion des services. Accédez à la page de votre application, puis cliquez sur Configurer.

  7. Dans la section Autorisations pour d'autres applications en bas de la page de configuration, cliquez sur Sélectionner une application, puis sélectionnez API de gestion des services Windows Azure.

    Affecter des autorisations à l'application
  8. Cliquez sur Autorisations déléguées : 0, puis sélectionnez Accéder à la gestion des services.

    Continuer la définition des autorisations
  9. Dans le menu inférieur, cliquez sur Enregistrer.

Vous pouvez facilement installer Active Directory Authentication Library dans votre projet Visual Studio à l'aide du package NuGet. Pour installer le package, procédez comme suit :

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nom du projet, puis cliquez sur Gérer les packages NuGet.

    Gérer les packages NuGet
  2. Dans la zone de recherche, tapez Active Directory, cliquez sur Installer pour le package Bibliothèque d'authentification Active Directory, puis suivez les instructions d'installation du package.

    Installer la bibliothèque Active Directory

L'exemple de code suivant montre comment récupérer le jeton d'accès :


private static string GetAuthorizationHeader()
{
  AuthenticationResult result = null;
  
  var context = new AuthenticationContext("https://login.windows.net/{tenantId}");

  var thread = new Thread(() =>
  {
    result = context.AcquireToken(
      "https://management.core.windows.net/",
      "{clientId}",
      new Uri("{redirectUri}"));
  });

  thread.SetApartmentState(ApartmentState.STA);
  thread.Name = "AquireTokenThread";
  thread.Start();
  thread.Join();
            
  if (result == null)
  {
    throw new InvalidOperationException("Failed to obtain the JWT token");
  }

  string token = result.AccessToken;
  return token;
}

Lorsque vous utilisez le code ci-dessus, vous devez remplacer ce qui suit :

  • {tenantId} par le GUID de l'application. Pour rechercher le GUID, accédez à la page Répertoire par défaut dans la section Active Directory du portail de gestion, sélectionnez l'application que vous avez créée précédemment, puis cliquez sur Points de terminaison.

    Afficher les points de terminaison

    Copiez le GUID de l'application, puis insérez-le dans l'espace réservé.

    Copier le point de terminaison de l'application
  • {clientId} par l'identificateur du client. Pour rechercher l'identificateur du client, accédez à la page Configuration de l'application dans le portail de gestion.

    Copier l'ID client AD
  • {redirectUri} par l'Uri de redirection. Pour rechercher l'Uri de redirection, accédez à la page Configuration de l'application dans le portail de gestion.

    Copier l'URI de redirection de l'application

Pour affecter le jeton renvoyé par la méthode GetAuthorizationHeader illustrée ci-dessus à une variable utilisable par la demande, utilisez la ligne de code suivante :

string token = GetAuthorizationHeader();

Pour ajouter le jeton à une demande, utilisez les lignes de code suivantes :


HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token);

Il est possible d'authentifier les demandes sécurisées adressées au service de gestion à l'aide de certificats de gestion sur protocole SSL. Pour pouvoir utiliser un certificat de gestion, celui-ci doit être téléchargé dans Azure. Après avoir ajouté un certificat de gestion à l'abonnement, vous pouvez signer les demandes adressées au service à l'aide du certificat. Pour plus d'informations sur la création de certificats de gestion et leur association à un abonnement, consultez Créer et télécharger un certificat de gestion pour Azure.

Lors de la conception d'une application, gardez à l'esprit les points suivants concernant les certificats de gestion :

  • L'API Service Management ne vérifie pas si un certificat est toujours valide. L'authentification se déroule avec succès en cas de certificat ayant expiré.

  • Tous les certificats de gestion ont le même ensemble de privilèges. Il n'y a aucune notion d'authentification « basée sur le rôle », selon laquelle un certificat de gestion pourrait être configuré dans un rôle et un autre sur le même abonnement serait configuré dans un rôle différent.

L'exemple suivant montre comment récupérer le certificat de gestion à l'aide des bibliothèques System.Net et System.Security.Cryptography.X509Certificates :


private static X509Certificate2 GetStoreCertificate(string thumbprint)
{
  List<StoreLocation> locations = new List<StoreLocation>
  { 
    StoreLocation.CurrentUser, 
    StoreLocation.LocalMachine
  };

  foreach (var location in locations)
  {
    X509Store store = new X509Store("My", location);
    try
    {
      store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
      X509Certificate2Collection certificates = store.Certificates.Find(
        X509FindType.FindByThumbprint, thumbprint, false);
      if (certificates.Count == 1)
      {
        return certificates[0];
      }
    }
    finally
    {
      store.Close();
    }
  }
  throw new ArgumentException(string.Format(
    "A Certificate with Thumbprint '{0}' could not be located.",
    thumbprint));
}

Pour affecter le certificat renvoyé par la méthode GetStoreCertificate illustrée ci-dessus à une variable utilisable par la demande, utilisez la ligne de code suivante :

noteRemarque
Thumbprint représente l'empreinte numérique du certificat de gestion que vous avez ajouté à l'abonnement.


X509Certificate2 certificate = GetStoreCertificate(Thumbprint);

Pour ajouter le certificat à une demande, utilisez les lignes de code suivantes :


HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.ClientCertificates.Add(certificate);

Afficher: