AADSTS50012:从测试应用程序转移到生产时提供了无效的客户端密钥

问题描述 投票:0回答:9

我在Azure门户下注册了两个应用程序:测试版本和生产版本。我的测试应用程序与我从 Azure 门户的测试应用程序详细信息中获取的客户端 ID 和 ClientSecret/AppKey 配合得很好。然而,当我转移到生产应用程序并将 ClientId 和 Secret 值替换为我注册的生产应用程序指定的值时,我突然收到一个错误:

AdalServiceException:AADSTS70002:验证凭据时出错。 AADSTS50012:提供的客户端密钥无效

但我相当确定我的客户端密钥是正确的,因为我刚刚从门户复制并粘贴了该密钥。有什么办法解决这个问题吗?

azure web-applications asp.net-mvc-5 azure-web-app-service azure-ad-graph-api
9个回答
37
投票

对您的秘密进行编码(例如,将

+
替换为
%2B
,将
=
替换为
%3D
等)


14
投票

您是否尝试过简单地重新生成秘密?

这里的错误非常简单,我不认为这是 AAD 的错误。

让我知道这是否适合您!


12
投票

这听起来可能很愚蠢,但正如它发生在我身上一样,它也可能发生在其他人身上(像我一样无能): 您需要使用的代码不是标有 “秘密 ID” 的代码,而是标有 “值” 的代码。


3
投票

问题是秘密的过期时间。 用6、12、18个月都没有问题,我用的是azure-cli 2.26.0 24 个月后你会得到错误:

{“error”:“invalid_client”,“error_description”:“AADSTS7000215:提供了无效的客户端密钥。 跟踪 ID:fef57aee-deeb-47fa-ae05-ba8427cd4300 相关 ID:ba3cc2d5-1594-4af3-be2b-3b35e8d40e06 时间戳: 2021-10-23 18:18:27Z","error_codes":[7000215],"timestamp":"2021-10-23 18:18:27Z","trace_id":"fef57aee-deeb-47fa- ae05-ba8427cd4300","correlation_id":"ba3cc2d5-1594-4af3-be2b-3b35e8d40e06","error_uri":"https://login.microsoftonline.com/error?code=7000215"}


1
投票

就我而言,我有两把钥匙。我创建了第三个,但没有用。最后,我删除了所有密钥并创建了一个新密钥,但是,只有一个。然后就成功了。


1
投票

也许这会帮助一些迷失的灵魂。

我在项目开始时在

secrets.json
中进行了秘密设置,但我忘记了。秘密过期后,我尝试更新
appsettings.json
无济于事,直到我想起来并在
secrets.json
中更改它。这是一个仅在本地运行的测试项目。您也可以将其放在
env
变量中,该变量也优先于
appsettings


0
投票

我在使用 Azure DevOps 将 docker 映像部署到 Azure 上的虚拟机时遇到了此问题。

我最初的 Azure DevOps 管道脚本是:

- stage: Deploy
  displayName: Deploy to VM
  jobs:
    - job: Deploy_to_VM
      displayName: Deploy to Virtual Machine
      steps:
        - task: AzureCLI@2
          displayName: Connect to Azure and deploy
          inputs:
            azureSubscription: $(AzureSubscription)
            scriptType: 'bash'
            scriptLocation: 'inlineScript'
            inlineScript: 'az vm run-command invoke -g $(rGroup) -n $(vmName) --command-id RunShellScript --scripts "docker pull $(containerRegistry).azurecr.io/$(imageName):$(tag) && docker service update --replicas=1 --force --image $(containerRegistry).azurecr.io/$(imageName):$(tag) $(imageName)_app"'

这是我修复它的方法:

将命令

az acr login --name $(containerRegistry)
添加到
az vm run-command
就可以了`

- stage: Deploy
  displayName: Deploy to VM
  jobs:
    - job: Deploy_to_VM
      displayName: Deploy to Virtual Machine
      steps:
        - task: AzureCLI@2
          displayName: Connect to Azure and deploy
          inputs:
            azureSubscription: $(AzureSubscription)
            scriptType: 'bash'
            scriptLocation: 'inlineScript'
            inlineScript: 'az vm run-command invoke -g $(rGroup) -n $(vmName) --command-id RunShellScript --scripts "az acr login --name $(containerRegistry) && docker pull $(containerRegistry).azurecr.io/$(imageName):$(tag) && docker service update --replicas=1 --force --image $(containerRegistry).azurecr.io/$(imageName):$(tag) $(imageName)_app"'

0
投票

确保没有名为 AzureAD__ClientSecret 的环境变量。由于环境变量优先于机密,因此更改机密不会产生任何影响。

切换到新项目后发生在我身上。


-1
投票

请检查您的配置中的租户 ID 和受众 ID。您可能仍然对测试环境有参考。

© www.soinside.com 2019 - 2024. All rights reserved.