Autenticazione di richieste di gestione dei servizi

Aggiornamento: giugno 2015

Le richieste al servizio di gestione devono essere autenticate con uno dei seguenti metodi:

Le richieste protette al servizio di gestione possono essere autenticate creando un'applicazione Azure AD e usando Active Directory Authentication Library per ottenere un token di accesso dall'applicazione. Per altre informazioni sull'autenticazione tramite Azure AD, vedere Scenari di autenticazione per Azure AD.

Eseguire le operazioni seguenti per aggiungere un'applicazione ad Azure AD:

  1. Accedere al portale di gestione di Azure.

  2. Nella parte inferiore del menu a sinistra fare clic su Active Directory e quindi su Directory predefinita.

  3. Nella pagina Directory predefinita, in Integrare applicazioni fare clic su Aggiungere un'applicazione che si sta sviluppando.

    Aggiunta di un'applicazione Azure AD
  4. Immettere il nome dell'applicazione, selezionare APPLICAZIONE CLIENT NATIVA e quindi fare clic sulla freccia destra.

    Specifica di un nome per l'applicazione
  5. Immettere un URI per l'applicazione e quindi fare clic sul segno di spunta. L'URI include il nome dell'applicazione che è preceduto da http://localhost/.

    Immissione dell'URL di reindirizzamento
  6. Dopo aver creato l'applicazione, è necessario aggiungere l'autorizzazione per consentire all'applicazione di accedere alle API di gestione dei servizi di Azure. Passare alla pagina dell'applicazione e quindi fare clic su Configura.

  7. Nella sezione Autorizzazioni per altre applicazioni nella parte inferiore della pagina di configurazione, fare clic su Selezionare l'applicazione e quindi selezionare API di gestione dei servizi di Azure.

    Assegnazione delle autorizzazioni all'applicazione
  8. Fare clic su Autorizzazioni delegate: 0, quindi selezionare Accesso a Gestione servizi di Azure.

    Prosecuzione dell'impostazione delle autorizzazioni
  9. Fare clic su Salva nel menu in basso.

È possibile installare facilmente Active Directory Authentication Library nel progetto di Visual Studio usando il pacchetto NuGet. Per installare il pacchetto, eseguire le operazioni seguenti:

  1. Fare clic con il pulsante destro del mouse sul nome del progetto in Esplora soluzioni e quindi scegliere Gestisci pacchetti NuGet.

    Gestione dei pacchetti NuGet
  2. Digitare Active Directory nella casella di ricerca, fare clic su Installa per il pacchetto Active Directory Authentication Library e quindi seguire le istruzioni per installarlo.

    Installazione della raccolta di Active Directory

Nell'esempio di codice seguente viene illustrato come recuperare il token di accesso:


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;
}

Quando si usa il codice riportato sopra, è necessario sostituire gli elementi seguenti:

  • {tenantId} con il GUID dell'applicazione. Per trovare il GUID, passare alla pagina Directory predefinita nella sezione Active Directory del portale di gestione, selezionare l'applicazione creata in precedenza e quindi fare clic su Visualizza endpoint.

    Visualizzazione degli endpoint

    Copiare il GUID dell'applicazione e sostituirlo al segnaposto.

    Copia dell'endpoint dell'applicazione
  • {clientId} con l'identificatore client. Per trovare l'identificatore client, passare alla pagina Configurazione dell'applicazione nel portale di gestione.

    Copia dell'ID client di AD
  • {redirectUri} con l'URI di reindirizzamento. Per trovare l'URI di reindirizzamento, passare alla pagina Configurazione dell'applicazione nel portale di gestione.

    Copia dell'URI di reindirizzamento dell'applicazione

Usare la riga di codice seguente per assegnare il token restituito dal metodo GetAuthorizationHeader, illustrato in precedenza, a una variabile che possa essere usata nella richiesta:

string token = GetAuthorizationHeader();

Usare le righe di codice seguenti per aggiungere il token a una richiesta:


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

Le richieste protette al servizio di gestione possono essere autenticate usando i certificati di gestione su SSL. Per usare un certificato di gestione, è necessario caricarlo in Azure. Dopo aver aggiunto un certificato di gestione alla sottoscrizione, è possibile firmare le richieste al servizio usando il certificato. Per informazioni su come creare certificati di gestione e associarli a una sottoscrizione, vedere Creare e caricare un certificato di gestione per Azure.

Quando si progetta un'applicazione, tenere presenti i seguenti punti relativi ai certificati di gestione:

  • L'API di gestione dei servizi non consente di verificare che un certificato sia ancora valido. L'autenticazione verrà completata anche se un certificato è scaduto.

  • Tutti i certificati di gestione presentano lo stesso set di privilegi. Non è prevista un'autenticazione "basata sui ruoli" in cui sia possibile configurare un certificato di gestione in un determinato ruolo e un altro certificato della stessa sottoscrizione in un ruolo diverso.

L'esempio seguente mostra come recuperare il certificato di gestione usando le librerie System.Net e 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));
}

Usare la seguente riga di codice per assegnare il certificato restituito dal metodo GetStoreCertificate mostrato in precedenza a una variabile che può essere usata dalla richiesta:

noteNota
Thumbprint rappresenta l'identificazione personale del certificato di gestione aggiunto alla sottoscrizione.


X509Certificate2 certificate = GetStoreCertificate(Thumbprint);

Usare le seguenti righe di codice per aggiungere il certificato a una richiesta:


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

Mostra: