Rozwiązywanie problemów z kodem błędu ServicePrincipalValidationClientError
W tym artykule omówiono sposób identyfikowania i rozwiązywania błędu ServicePrincipalValidationClientError
, który może wystąpić, jeśli spróbujesz utworzyć i wdrożyć klaster usługi Microsoft Azure Kubernetes Service (AKS).
Wymagania wstępne
- Interfejs wiersza polecenia platformy Azure w wersji 2.0.59 lub nowszej. Jeśli interfejs wiersza polecenia platformy Azure jest już zainstalowany, możesz znaleźć numer wersji, uruchamiając polecenie
az --version
.
Symptomy
Podczas próby wdrożenia klastra usługi AKS zostanie wyświetlony następujący komunikat o błędzie:
adal: Żądanie odświeżania nie powiodło się. Kod stanu = '401'.
Treść odpowiedzi: {
"error": "invalid_client",
"error_description": "AADSTS7000215: podano nieprawidłowy wpis tajny klienta. Upewnij się, że wpis tajny wysyłany w żądaniu jest wartością klucza tajnego klienta, a nie identyfikatorem wpisu tajnego klienta dodanego do aplikacji "123456789-1234-1234-1234-1234567890987".\r\n
Identyfikator śledzenia: 12345\r\n
Identyfikator korelacji: 6789\r\n
Sygnatura czasowa: 2022-02-03 03:07:11Z",
"error_codes": [7000215],
"sygnatura czasowa": "2022-02-03 03:07:11Z",
"trace_id": "12345",
"correlation_id": "6789",
"error_uri": "https://login.microsoftonline.com/error?code=7000215"
} Punkt końcowy https://login.microsoftonline.com/123456787/oauth2/token?api-version=1.0
Przyczyna
Wpis tajny podany dla wyróżnionej jednostki usługi jest nieprawidłowy.
Rozwiązanie 1. Resetowanie wpisu tajnego jednostki usługi
Aby rozwiązać ten problem, zresetuj klucz tajny jednostki usługi przy użyciu jednej z następujących metod:
Zresetuj poświadczenia jednostki usługi, uruchamiając polecenie az ad sp credential reset :
az ad sp credential reset --name "01234567-89ab-cdef-0123-456789abcdef" --query password --output tsv
Określ datę wygaśnięcia, uruchamiając następujące polecenie:
az ad sp credential reset --name <service-principal-name> --credential-description "New secret for AKS" --years 1
Poprzednie polecenie resetuje wpis tajny i wyświetla go jako dane wyjściowe. Następnie można określić nowy wpis tajny podczas próby ponownego utworzenia nowego klastra.
W przypadku operacji, które zakończyły się niepowodzeniem w istniejącym klastrze, upewnij się, że klaster usługi AKS został zaktualizowany przy użyciu nowego wpisu tajnego:
az aks update-credentials --resource-group <resource-group> --name <aks-cluster> --reset-service-principal --client-secret <new-client-secret>
Rozwiązanie 2. Tworzenie nowej jednostki usługi
Możesz utworzyć nową jednostkę usługi i uzyskać skojarzony z nim wpis tajny, uruchamiając polecenie az ad sp create-for-rbac :
az ad sp create-for-rbac --role Contributor
Dane wyjściowe polecenia powinny przypominać następujący ciąg JSON:
{
"appId": "12345678-9abc-def0-1234-56789abcdef0",
"name": "23456789-abcd-ef01-2345-6789abcdef01",
"password": "3456789a-bcde-f012-3456-789abcdef012",
"tenant": "456789ab-cdef-0123-4567-89abcdef0123"
}
Zanotuj appId
wygenerowane wartości i .password
Po otrzymaniu tych wartości możesz ponownie uruchomić polecenie tworzenia klastra dla nowej jednostki usługi i wpisu tajnego.
Aby zaktualizować klaster usługi AKS przy użyciu poświadczeń nowej jednostki usługi, uruchom następujące polecenie:
az aks update-credentials --resource-group <resource-group> --name <aks-cluster> --service-principal <new-client-id> --client-secret <new-client-secret>
Więcej informacji
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.