Leggere in inglese

Condividi tramite


Risolvere l'errore ServicePrincipalValidationClientError

Questo articolo illustra come identificare e risolvere l'errore ServicePrincipalValidationClientError che può verificarsi se si tenta di creare e implementare un cluster di Microsoft Azure Kubernetes Service (AKS).

Prerequisiti

  • Interfaccia della riga di comando di Azure, versione 2.0.59 o successiva. Se l'interfaccia della riga di comando di Azure è già installata, è possibile trovare il numero di versione eseguendo az --version.

Sintomi

Quando si tenta di distribuire un cluster del servizio Azure Kubernetes, viene visualizzato il messaggio di errore seguente:

adal: richiesta di aggiornamento non riuscita. Codice di stato = '401'.

Corpo della risposta: {

"error": "invalid_client",

"error_description": "AADSTS7000215: segreto client non valido fornito. Assicurarsi che il segreto inviato nella richiesta sia il valore del segreto client, non l'ID segreto client, per un segreto aggiunto all'app '123456789-1234-1234-1234-1234-1234567890987'.\r\n

ID traccia: 12345\r\n

ID correlazione: 6789\r\n

Timestamp: 2022-02-03 03:07:11Z",

"codici_errore": [7000215],

"timestamp": "2022-02-03 03:07:11Z",

"trace_id": "12345",

"correlation_id": "6789",

"error_uri": "https://login.microsoftonline.com/error?code=7000215"

} Punto finale https://login.microsoftonline.com/123456787/oauth2/token?api-version=1.0

Causa

Il segreto fornito per l'entità servizio evidenziata non è valido.

Soluzione 1: Reimpostare il segreto dell'entità servizio

Per risolvere questo problema, reimpostare il segreto del principale di servizio usando uno dei metodi seguenti:

  • Reimpostare le credenziali dell'entità servizio eseguendo il comando az ad sp credential reset :

    az ad sp credential reset --name "01234567-89ab-cdef-0123-456789abcdef" --query password --output tsv
    
  • Specificare la data di scadenza eseguendo il comando seguente:

    az ad sp credential reset --name <service-principal-name> --credential-description "New secret for AKS" --years 1
    

Il comando precedente reimposta il segreto e lo visualizza come output. È quindi possibile specificare il nuovo segreto quando si tenta di creare di nuovo il nuovo cluster.

Per le operazioni non riuscite in un cluster esistente, assicurati di aggiornare il cluster AKS con il nuovo secret.

az aks update-credentials --resource-group <resource-group> --name <aks-cluster> --reset-service-principal --client-secret <new-client-secret>

Soluzione 2: Creare un nuovo principale del servizio

È possibile creare una nuova entità servizio e ottenere il segreto associato eseguendo il comando az ad sp create-for-rbac :

az ad sp create-for-rbac --role Contributor

L'output del comando dovrebbe essere simile alla stringa JSON seguente:

{
  "appId": "12345678-9abc-def0-1234-56789abcdef0",
  "name": "23456789-abcd-ef01-2345-6789abcdef01",
  "password": "3456789a-bcde-f012-3456-789abcdef012",
  "tenant": "456789ab-cdef-0123-4567-89abcdef0123"
}

Si notino i appId valori e password generati. Dopo aver visualizzato questi valori, è possibile eseguire di nuovo il comando di creazione del cluster per la nuova entità servizio e il segreto.

Per aggiornare il cluster del servizio Azure Kubernetes (AKS) con le credenziali della nuova entità servizio, eseguire il comando seguente:

az aks update-credentials --resource-group <resource-group> --name <aks-cluster> --service-principal <new-client-id> --client-secret <new-client-secret>

Ulteriori informazioni

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.