Condividi tramite


Autenticazione Microsoft Entra per Application Insights

Application Insights ora supporta l'autenticazione con Microsoft Entra. Usando Microsoft Entra ID, è possibile assicurarsi che nelle risorse di Application Insights vengano inseriti solo i dati di telemetria autenticati.

L'uso di vari sistemi di autenticazione può essere complesso e rischioso perché è difficile gestire le credenziali su larga scala. È ora possibile scegliere di rifiutare esplicitamente l'autenticazione locale per garantire che nella risorsa vengano inseriti solo i dati di telemetria esclusivamente autenticati tramiteidentità gestite e Microsoft Entra ID. Questa funzionalità è un passaggio per migliorare la sicurezza e l'affidabilità dei dati di telemetria usati per prendere decisioni operative critiche (avvisi e scalabilità automatica) e aziendali.

Prerequisiti

Per abilitare l'inserimento autenticato di Microsoft Entra, sono necessari i passaggi preliminari seguenti. Dovrai:

Scenari non supportati

I seguenti SDK e le funzionalità relative non sono supportati per l'uso con l'inserimento autenticato di Microsoft Entra:

Configurare e abilitare l'autenticazione basata su Microsoft Entra ID

  1. Se non si ha già un'identità, crearne una usando un'identità gestita o un'entità servizio.

  2. Assegnare il ruolo di controllo degli accessi in base al ruolo (RBAC) richiesto all'identità di Azure, all'entità servizio o all'account utente di Azure.

    Seguire la procedura descritta in Assegnare i ruoli di Azure per aggiungere il ruolo server di pubblicazione delle metriche di monitoraggio all'identità prevista, all'entità servizio o all'account utente di Azure impostando la risorsa di Application Insights di destinazione come ambito del ruolo.

    Nota

    Sebbene il ruolo di server di pubblicazione delle metriche di monitoraggio indichi "metriche", pubblicherà tutti i dati di telemetria nella risorsa di Application Insights.

  3. Seguire le indicazioni di configurazione in base alla lingua seguente.

Nota

Il supporto per Microsoft Entra ID nell'SDK Application Insights .NET è incluso a partire dalla versione 2.18-Beta3.

L'SDK Application Insights .NET supporta le classi di credenziali fornite da Azure Identity.

  • Usare DefaultAzureCredential per lo sviluppo locale.
  • Eseguire l'autenticazione in Visual Studio con l'account utente di Azure previsto. Per altre informazioni, vedere Eseguire l'autenticazione tramite Visual Studio.
  • Usare ManagedIdentityCredential per le identità gestite assegnate dal sistema o assegnate dall'utente.
    • In caso di assegnazione dal sistema, usare il costruttore predefinito senza parametri.
    • In caso di assegnazione dall'utente, fornire l'ID client al costruttore.

L'esempio seguente illustra come creare e configurare manualmente TelemetryConfiguration usando .NET:

TelemetryConfiguration.Active.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/";
var credential = new DefaultAzureCredential();
TelemetryConfiguration.Active.SetAzureTokenCredential(credential);

L'esempio seguente illustra come configurare TelemetryConfiguration usando .NET Core:

services.Configure<TelemetryConfiguration>(config =>
{
    var credential = new DefaultAzureCredential();
    config.SetAzureTokenCredential(credential);
});
services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
{
    ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/"
});

Configurazione delle variabili di ambiente

Quando si usa la strumentazione automatica di Servizi app di Azure, la variabile di ambiente APPLICATIONINSIGHTS_AUTHENTICATION_STRING consente ad Application Insights di eseguire l'autenticazione a Microsoft Entra ID e inviare dati di telemetria.

  • Per l'identità assegnata dal sistema:
Impostazione app Valore
APPLICATIONINSIGHTS_AUTHENTICATION_STRING Authorization=AAD
  • Per l'identità assegnata dall'utente:
Impostazione app Valore
APPLICATIONINSIGHTS_AUTHENTICATION_STRING Authorization=AAD;ClientId={Client id of the User-Assigned Identity}

Eseguire una query ad Application Insights usando l'autenticazione di Microsoft Entra

È possibile inviare una richiesta di query usando l'endpoint https://api.applicationinsights.iodi Application Insights di Monitoraggio di Azure. Per accedere all'endpoint, è necessario eseguire l'autenticazione tramite Microsoft Entra ID.

Configurazione dell'autenticazione

Per accedere all'API, registrare un'app client con Microsoft Entra ID e richiedere un token.

  1. Registrare un'app in Microsoft Entra ID.

  2. Nella pagina di panoramica dell'app selezionare Autorizzazioni API.

  3. Seleziona Aggiungi autorizzazione.

  4. Nella scheda API usate dall'organizzazione cercare Application Insights e selezionare API di Application Insights nell'elenco.

  5. Seleziona Autorizzazioni delegate.

  6. Selezionare la casella di controllo Data.Read.

  7. Selezionare Aggiungi autorizzazioni.

Ora che l'app è registrata e ha le autorizzazioni per usare l'API, concedere all'app l'accesso alla risorsa di Application Insights.

  1. Nella pagina di panoramica delle risorse di Application Insights, selezionare Controllo di accesso (IAM).

  2. Selezionare Aggiungi un'assegnazione di ruolo.

  3. Selezionare il ruolo Lettore, quindi selezionare Membri.

  4. Nella scheda Membri, scegliere Seleziona membri.

  5. Immettere il nome dell’app nella casella Seleziona.

  6. Selezionare l’app e scegliere Seleziona.

  7. Seleziona Rivedi + assegna.

  8. Dopo aver completato le autorizzazioni e la configurazione di Active Directory, richiedere un token di autorizzazione.

Nota

Per questo esempio è stato applicato il ruolo Lettore. Questo è uno dei molti ruoli predefiniti e può includere più autorizzazioni di quelle necessarie. È possibile creare ruoli e autorizzazioni più granulari.

Richiesta di un token di autorizzazione.

Prima di iniziare, assicurarsi di disporre di tutti i valori necessari per eseguire correttamente la richiesta. Tutte le richieste necessitano di:

  • ID tenant di Microsoft Entra.
  • ID app di App Insights: se si usano attualmente chiavi API, è lo stesso ID app.
  • ID client Microsoft Entra per l'app.
  • Segreto client Microsoft Entra per l'app.

L'API Application Insights supporta l'autenticazione di Microsoft Entra con tre differenti flussi di Microsoft Entra ID OAuth2:

  • Credenziali del client
  • Codice di autorizzazione
  • Implicito

Flusso di credenziali client

Nel flusso delle credenziali client il token viene usato con l'endpoint di Application Insights. Viene effettuata una singola richiesta per ricevere un token usando le credenziali fornite per l'app nel passaggio precedente quando si registra un'app in Microsoft Entra ID.

Usare l'endpoint https://api.applicationinsights.io.

URL del token delle credenziali client (richiesta POST)
    POST /<your-tenant-id>/oauth2/token
    Host: https://login.microsoftonline.com
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=client_credentials
    &client_id=<app-client-id>
    &resource=https://api.applicationinsights.io
    &client_secret=<app-client-secret>

Una richiesta con esito positivo riceve un token di accesso nella risposta:

    {
        token_type": "Bearer",
        "expires_in": "86399",
        "ext_expires_in": "86399",
        "access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax"
    }

Usare il token nelle richieste all'endpoint di Application Insights:

    POST /v1/apps/yous_app_id/query?timespan=P1D
    Host: https://api.applicationinsights.io
    Content-Type: application/json
    Authorization: Bearer <your access token>

    Body:
    {
    "query": "requests | take 10"
    }

Esempio di risposta:

  "tables": [
    {
      "name": "PrimaryResult",
      "columns": [
        {
          "name": "timestamp",
          "type": "datetime"
        },
        {
          "name": "id",
          "type": "string"
        },
        {
          "name": "source",
          "type": "string"
        },
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "url",
          "type": "string"
        },
        {
          "name": "success",
          "type": "string"
        },
        {
          "name": "resultCode",
          "type": "string"
        },
        {
          "name": "duration",
          "type": "real"
        },
        {
          "name": "performanceBucket",
          "type": "string"
        },
        {
          "name": "customDimensions",
          "type": "dynamic"
        },
        {
          "name": "customMeasurements",
          "type": "dynamic"
        },
        {
          "name": "operation_Name",
          "type": "string"
        },
        {
          "name": "operation_Id",
          "type": "string"
        },
        {
          "name": "operation_ParentId",
          "type": "string"
        },
        {
          "name": "operation_SyntheticSource",
          "type": "string"
        },
        {
          "name": "session_Id",
          "type": "string"
        },
        {
          "name": "user_Id",
          "type": "string"
        },
        {
          "name": "user_AuthenticatedId",
          "type": "string"
        },
        {
          "name": "user_AccountId",
          "type": "string"
        },
        {
          "name": "application_Version",
          "type": "string"
        },
        {
          "name": "client_Type",
          "type": "string"
        },
        {
          "name": "client_Model",
          "type": "string"
        },
        {
          "name": "client_OS",
          "type": "string"
        },
        {
          "name": "client_IP",
          "type": "string"
        },
        {
          "name": "client_City",
          "type": "string"
        },
        {
          "name": "client_StateOrProvince",
          "type": "string"
        },
        {
          "name": "client_CountryOrRegion",
          "type": "string"
        },
        {
          "name": "client_Browser",
          "type": "string"
        },
        {
          "name": "cloud_RoleName",
          "type": "string"
        },
        {
          "name": "cloud_RoleInstance",
          "type": "string"
        },
        {
          "name": "appId",
          "type": "string"
        },
        {
          "name": "appName",
          "type": "string"
        },
        {
          "name": "iKey",
          "type": "string"
        },
        {
          "name": "sdkVersion",
          "type": "string"
        },
        {
          "name": "itemId",
          "type": "string"
        },
        {
          "name": "itemType",
          "type": "string"
        },
        {
          "name": "itemCount",
          "type": "int"
        }
      ],
      "rows": [
        [
          "2018-02-01T17:33:09.788Z",
          "|0qRud6jz3k0=.c32c2659_",
          null,
          "GET Reports/Index",
          "http://fabrikamfiberapp.azurewebsites.net/Reports",
          "True",
          "200",
          "3.3833",
          "<250ms",
          "{\"_MS.ProcessedByMetricExtractors\":\"(Name:'Requests', Ver:'1.0')\"}",
          null,
          "GET Reports/Index",
          "0qRud6jz3k0=",
          "0qRud6jz3k0=",
          "Application Insights Availability Monitoring",
          "9fc6738d-7e26-44f0-b88e-6fae8ccb6b26",
          "us-va-ash-azr_9fc6738d-7e26-44f0-b88e-6fae8ccb6b26",
          null,
          null,
          "AutoGen_49c3aea0-4641-4675-93b5-55f7a62d22d3",
          "PC",
          null,
          null,
          "52.168.8.0",
          "Boydton",
          "Virginia",
          "United States",
          null,
          "fabrikamfiberapp",
          "RD00155D5053D1",
          "cf58dcfd-0683-487c-bc84-048789bca8e5",
          "fabrikamprod",
          "5a2e4e0c-e136-4a15-9824-90ba859b0a89",
          "web:2.5.0-33031",
          "051ad4ef-0776-11e8-ac6e-e30599af6943",
          "request",
          "1"
        ],
        [
          "2018-02-01T17:33:15.786Z",
          "|x/Ysh+M1TfU=.c32c265a_",
          null,
          "GET Home/Index",
          "http://fabrikamfiberapp.azurewebsites.net/",
          "True",
          "200",
          "716.2912",
          "500ms-1sec",
          "{\"_MS.ProcessedByMetricExtractors\":\"(Name:'Requests', Ver:'1.0')\"}",
          null,
          "GET Home/Index",
          "x/Ysh+M1TfU=",
          "x/Ysh+M1TfU=",
          "Application Insights Availability Monitoring",
          "58b15be6-d1e6-4d89-9919-52f63b840913",
          "emea-se-sto-edge_58b15be6-d1e6-4d89-9919-52f63b840913",
          null,
          null,
          "AutoGen_49c3aea0-4641-4675-93b5-55f7a62d22d3",
          "PC",
          null,
          null,
          "51.141.32.0",
          "Cardiff",
          "Cardiff",
          "United Kingdom",
          null,
          "fabrikamfiberapp",
          "RD00155D5053D1",
          "cf58dcfd-0683-487c-bc84-048789bca8e5",
          "fabrikamprod",
          "5a2e4e0c-e136-4a15-9824-90ba859b0a89",
          "web:2.5.0-33031",
          "051ad4f0-0776-11e8-ac6e-e30599af6943",
          "request",
          "1"
        ]
      ]
    }
  ]
}

Flusso del codice di autorizzazione

Il flusso OAuth2 principale supportato è tramite codici di autorizzazione. Questo metodo richiede due richieste HTTP per acquisire un token con cui chiamare l'API Application Insights di Monitoraggio di Azure. Sono disponibili due URL, con un endpoint per ogni richiesta. I rispettivi formati sono descritti nelle sezioni seguenti.

Codice di autorizzazione URL (richiesta GET)
    GET https://login.microsoftonline.com/YOUR_Azure AD_TENANT/oauth2/authorize?
    client_id=<app-client-id>
    &response_type=code
    &redirect_uri=<app-redirect-uri>
    &resource=https://api.applicationinsights.io

Quando viene effettuata una richiesta all'URL di autorizzazione, il client\_id è l'ID applicazione dell'app Microsoft Entra copiato nel menu delle proprietà dell'app. redirect\_uri è l'URL homepage/login della stessa app Microsoft Entra. Quando una richiesta ha esito positivo, questo endpoint reindirizza l'utente alla pagina di accesso fornita all'iscrizione con il codice di autorizzazione aggiunto all'URL. Vedere l'esempio seguente:

    http://<app-client-id>/?code=AUTHORIZATION_CODE&session_state=STATE_GUID

A questo punto, si ottiene un codice di autorizzazione, che viene usato per richiedere un token di accesso.

URL del token del codice di autorizzazione (richiesta POST)
    POST /YOUR_Azure AD_TENANT/oauth2/token HTTP/1.1
    Host: https://login.microsoftonline.com
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=authorization_code
    &client_id=<app client id>
    &code=<auth code fom GET request>
    &redirect_uri=<app-client-id>
    &resource=https://api.applicationinsights.io
    &client_secret=<app-client-secret>

Tutti i valori sono uguali a prima, con alcune aggiunte. Il codice di autorizzazione è lo stesso codice ricevuto nella richiesta precedente dopo un reindirizzamento riuscito. Il codice viene combinato con la chiave ottenuta dall'app Microsoft Entra. Se la chiave non è stata salvata, è possibile eliminarla e crearne una nuova dalla scheda chiavi del menu dell'app Microsoft Entra. La risposta è una stringa JSON che contiene il token con lo schema seguente. I tipi sono indicati per i valori del token.

Esempio di risposta:

    {
        "access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax",
        "expires_in": "3600",
        "ext_expires_in": "1503641912",
        "id_token": "not_needed_for_app_insights",
        "not_before": "1503638012",
        "refresh_token": "eyJ0esdfiJKV1ljhgYF.....Az",
        "resource": "https://api.applicationinsights.io",
        "scope": "Data.Read",
        "token_type": "bearer"
    }

La parte del token di accesso di questa risposta è ciò che si presenta all'API Application Insights nell'intestazione Authorization: Bearer. Inoltre, è possibile usare il token di aggiornamento in futuro per acquisire un nuovo access_token e refresh_token quando i dati non sono più aggiornati. Per questa richiesta, il formato e l'endpoint sono:

    POST /YOUR_AAD_TENANT/oauth2/token HTTP/1.1
    Host: https://login.microsoftonline.com
    Content-Type: application/x-www-form-urlencoded
    
    client_id=<app-client-id>
    &refresh_token=<refresh-token>
    &grant_type=refresh_token
    &resource=https://api.applicationinsights.io
    &client_secret=<app-client-secret>

Esempio di risposta:

    {
      "token_type": "Bearer",
      "expires_in": "3600",
      "expires_on": "1460404526",
      "resource": "https://api.applicationinsights.io",
      "access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax",
      "refresh_token": "eyJ0esdfiJKV1ljhgYF.....Az"
    }

Flusso di codice implicito

L'API di Application Insights supporta il flusso implicito OAuth2. Per questo flusso è necessaria solo una singola richiesta, ma non è possibile acquisire alcun token di aggiornamento.

URL di autorizzazione del codice implicito
    GET https://login.microsoftonline.com/YOUR_AAD_TENANT/oauth2/authorize?
    client_id=<app-client-id>
    &response_type=token
    &redirect_uri=<app-redirect-uri>
    &resource=https://api.applicationinsights.io

Una richiesta con esito positivo genera un reindirizzamento all'URI di reindirizzamento con il token nell'URL:

    http://YOUR_REDIRECT_URI/#access_token=YOUR_ACCESS_TOKEN&token_type=Bearer&expires_in=3600&session_state=STATE_GUID

Questo access_token funge da valore dell'intestazione Authorization: Bearer quando passa all'API di Application Insights per autorizzare le richieste.

Disabilita autenticazione locale

Dopo aver abilitato l'autenticazione di Microsoft Entra, è possibile scegliere di disabilitare l'autenticazione locale. Questa configurazione consente di inserire i dati di telemetria autenticati esclusivamente dall'ID Entra di Microsoft e influisce sull'accesso ai dati, ad esempio tramite chiavi API.

È possibile disabilitare l'autenticazione locale usando il portale di Azure o Criteri di Azure o a livello di codice.

Azure portal

  1. Dalla risorsa di Application Insights selezionare Proprietà sotto l'intestazione Configura nel menu a sinistra. Selezionare Abilitato (fare clic per modificare) se l'autenticazione locale è abilitata.

    Screenshot che mostra le proprietà nella sezione Configura e il pulsante di autenticazione locale Abilitato (selezionare per modificare).

  2. Selezionare Disabilitato e applicare le modifiche.

    Screenshot che mostra l'autenticazione locale con il pulsante Abilitato/Disabilitato.

  3. Dopo aver disabilitato l'autenticazione locale nella risorsa, verranno visualizzate le informazioni corrispondenti nel riquadro Panoramica.

    Screenshot che mostra la scheda Panoramica con il pulsante di autenticazione locale Disabilitato (selezionare per modificare).

Criteri di Azure

Criteri di Azure per DisableLocalAuth nega agli utenti la possibilità di creare una nuova risorsa di Application Insights senza questa proprietà impostata su true. Il nome del criterio è Application Insights components should block non-Azure Active Directory based ingestion.

Per applicare questa definizione di criteri alla sottoscrizione, creare una nuova assegnazione di criteri e assegnare il criterio.

L'esempio seguente mostra la definizione del modello di criteri:

{
    "properties": {
        "displayName": "Application Insights components should block non-Azure Active Directory based ingestion",
        "policyType": "BuiltIn",
        "mode": "Indexed",
        "description": "Improve Application Insights security by disabling log ingestion that are not AAD-based.",
        "metadata": {
            "version": "1.0.0",
            "category": "Monitoring"
        },
        "parameters": {
            "effect": {
                "type": "String",
                "metadata": {
                    "displayName": "Effect",
                    "description": "The effect determines what happens when the policy rule is evaluated to match"
                },
                "allowedValues": [
                    "audit",
                    "deny",
                    "disabled"
                ],
                "defaultValue": "audit"
            }
        },
        "policyRule": {
            "if": {
                "allOf": [
                    {
                        "field": "type",
                        "equals": "Microsoft.Insights/components"
                    },
                    {
                        "field": "Microsoft.Insights/components/DisableLocalAuth",
                        "notEquals": "true"                        
                    }
                ]
            },
            "then": {
                "effect": "[parameters('effect')]"
            }
        }
    }
}

Abilitazione a livello di codice

La proprietà DisableLocalAuth viene usata per disabilitare qualsiasi autenticazione locale nella risorsa di Application Insights. Se impostato su true, questa proprietà applica che l'autenticazione di Microsoft Entra deve essere usata per tutti gli accessi.

L'esempio seguente illustra il modello di Resource Manager che è possibile usare per creare una risorsa di Application Insights basata sull'area di lavoro con LocalAuth disabilitato.

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "name": {
            "type": "string"
        },
        "type": {
            "type": "string"
        },
        "regionId": {
            "type": "string"
        },
        "tagsArray": {
            "type": "object"
        },
        "requestSource": {
            "type": "string"
        },
        "workspaceResourceId": {
            "type": "string"
        },
        "disableLocalAuth": {
            "type": "bool"
        }
     
    },
    "resources": [
        {
        "name": "[parameters('name')]",
        "type": "microsoft.insights/components",
        "location": "[parameters('regionId')]",
        "tags": "[parameters('tagsArray')]",
        "apiVersion": "2020-02-02-preview",
        "dependsOn": [],
        "properties": {
            "Application_Type": "[parameters('type')]",
            "Flow_Type": "Redfield",
            "Request_Source": "[parameters('requestSource')]",
            "WorkspaceResourceId": "[parameters('workspaceResourceId')]",
            "DisableLocalAuth": "[parameters('disableLocalAuth')]"
            }
    }
 ]
}

Destinatari dei token

Quando si sviluppa un client personalizzato per ottenere un token di accesso da Microsoft Entra ID per l'invio di dati di telemetria ad Application Insights, vedere la tabella seguente per determinare la stringa di destinatari appropriata per l'ambiente host specifico.

Versione cloud di Azure Valore dei destinatari del token
Cloud pubblico di Azure https://monitor.azure.com
Microsoft Azure gestito da 21Vianet cloud https://monitor.azure.cn
Azure US Government cloud https://monitor.azure.us

Se si usano cloud sovrani, è possibile trovare anche le informazioni sui destinatari nella stringa di connessione. La stringa di connessione segue questa struttura:

InstrumentationKey={profile.InstrumentationKey};IngestionEndpoint={ingestionEndpoint};LiveEndpoint={liveDiagnosticsEndpoint};AADAudience={aadAudience}

Il parametro destinatari, AADAudience, può variare a seconda dell'ambiente specifico.

Risoluzione dei problemi

Questa sezione fornisce scenari di risoluzione dei problemi e passaggi distinti che è possibile eseguire per risolvere un problema prima di generare un ticket di supporto.

Errori HTTP di inserimento

Il servizio di inserimento restituisce errori specifici, indipendentemente dal linguaggio SDK. È possibile raccogliere il traffico di rete usando uno strumento come Fiddler. È consigliabile filtrare il traffico verso l'endpoint di inserimento impostato nella stringa di connessione.

HTTP/1.1 400 Autenticazione non supportata

Questo errore indica che la risorsa è impostata solo per Microsoft Entra. È necessario configurare correttamente l'SDK perché viene inviato all'API errata.

Nota

"v2/track" non supporta Microsoft Entra ID. Quando l'SDK è configurato correttamente, i dati di telemetria verranno inviati a "v2.1/track".

Successivamente, è necessario esaminare la configurazione dell'SDK.

HTTP/1.1 401 autorizzazione richiesta

Questo errore indica che l'SDK è configurato correttamente, ma non è in grado di acquisire un token valido. Questo errore potrebbe indicare un problema con Microsoft Entra ID.

Passaggio successivo: identificare le eccezioni nei log dell'SDK o gli errori di rete di Identità di Azure.

HTTP/1.1 403 Non autorizzato

Questo errore indica che l'SDK usa le credenziali senza autorizzazione per la risorsa o la sottoscrizione di Application Insights.

Innanzitutto, esaminare il controllo di accesso della risorsa di Application Insights. È necessario configurare l'SDK con le credenziali con il ruolo di server di pubblicazione delle metriche di monitoraggio.

Risoluzione dei problemi specifici della lingua

Origine evento

Application Insights .NET SDK genera i log degli errori usando l'origine evento. Per altre informazioni sulla raccolta dei log dell'origine eventi, vedere Risoluzione dei problemi relativi a nessun dato: raccogliere i log con PerfView.

Se l'SDK non riesce a ottenere un token, il messaggio di eccezione viene registrato come Failed to get AAD Token. Error message:.

Passaggi successivi