0

我有 Azure 应用程序注册和活动密码。 在此处输入图像描述

我正在尝试使用 v1.0 获取令牌,如下所示(clientId是上述应用注册的 ID)

$body = @{
    grant_type = 'client_credentials';
    client_id = $clientId;
    client_secret = $clientSecret;
    resource = $resourceId;
}

$aadResponse = Invoke-WebRequest -Uri "https://login.microsoftonline.com/$aadtenantId/oauth2/token" -Method POST -Body $body -UseBasicParsing

使用一切按预期重新生成凭据后az ad app credential reset --id XXX- 正确获得了令牌。

但是,在 Azure Devops 中,从 KV 获取值时出现以下错误 在此处输入图像描述

然后我将转到 Azure Devops Service Connection 和 with ,edit我可以在没有任何进一步更改的情况下与 KV 连接。 verifysave在此处输入图像描述

但是,此操作会破坏令牌的初始工作获取(如上所述)。

我百分百确定:

  1. 密码正确
  2. 我真的在使用密码,而不是它的 ID
  3. 编码密码无济于事
  4. 除了verify服务连接没有其他动作
  5. 我使用服务主体客户端 ID作为对服务连接的引用来获取 JWT 失败

我究竟做错了什么?

4

1 回答 1

1

我也可以在我这边重现您的问题。

在此处输入图像描述

使用 重新生成客户端密码后az ad app credential reset --id XXX,我想当您单击Verify服务连接中的 时,您应该会收到如下错误Azure Resource Manager using service principal (automatic)

在此处输入图像描述

如服务连接页面所示,您是使用自动方式创建的,如果您重新生成客户端密码,则需要使用手动方式创建新的服务连接才能解决问题。

在此处输入图像描述

您可以在 keyvault 页面和您的 AAD 应用程序页面上获取这些值。对于Service principal key,是你重新生成的客户端秘钥,如果不保存就无法再次获取,如果是,则需要重新生成一个新的。

在此处输入图像描述

在此处输入图像描述

固定值后,验证并保存。

在此处输入图像描述

然后在任务中使用新的服务连接AzureKeyVault@2,它工作正常。

在此处输入图像描述

于 2021-09-06T06:47:32.283 回答