ServicePrincipalValidationClientError 错误代码疑难解答

本文介绍如何识别和解决ServicePrincipalValidationClientError尝试创建和部署Microsoft Azure Kubernetes 服务 (AKS) 群集时可能发生的错误。

先决条件

  • Azure CLI 版本 2.0.59 或更高版本。 如果已安装 Azure CLI,可以通过运行 az --version找到版本号。

现象

尝试部署 AKS 群集时,会收到以下错误消息:

adal:刷新请求失败。 状态代码 = “401”。

响应正文: {

“error”: “invalid_client”,

“error_description”:“AADSTS7000215: 提供的客户端密码无效。确保请求中发送的机密是客户端机密值,而不是客户端密码 ID,用于添加到应用“123456789-1234-1234-1234-1234567890987”的机密。\r\n

跟踪 ID:12345\r\n

相关 ID:6789\r\n

时间戳:2022-02-03 03:07:11Z“,

“error_codes”: [7000215],

“timestamp”: “2022-02-03 03:07:11Z”,

“trace_id”: “12345”,

“correlation_id”: “6789”,

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

} 终结点 https://login.microsoftonline.com/123456787/oauth2/token?api-version=1.0

原因

为突出显示的服务主体提供的机密无效。

解决方案 1:重置服务主体机密

若要解决此问题,请使用以下方法之一重置服务主体机密:

  • 通过运行 az ad sp credential reset 命令重置服务主体的凭据:

    az ad sp credential reset --name "01234567-89ab-cdef-0123-456789abcdef" --query password --output tsv
    
  • 运行以下命令指定到期日期:

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

上述命令将重置机密并将其显示为输出。 然后,可以在尝试再次创建新群集时指定新机密。

对于现有群集中的失败操作,请确保使用新机密更新 AKS 群集:

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

解决方案 2:创建新的服务主体

可以通过运行 az ad sp create-for-rbac 命令来创建新的服务主体并获取与其关联的机密:

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

命令的输出应类似于以下 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"
}

appId请注意生成的值和password值。 获取这些值后,可以重新运行新服务主体和机密的群集创建命令。

若要使用新服务主体的凭据更新 AKS 群集,请运行以下命令:

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

详细信息

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区