“未能获取 Azure DevOps Service 访问令牌”错误

现象

尝试验证自动 Azure RM 服务连接时,可能会收到以下错误消息:

未能获取 Azure DevOps Service 访问令牌,缓存值无效。

显示自动 Azure RM 连接的验证的屏幕截图。

调试步骤

在重现问题时捕获 F12/Fiddler 跟踪

跟踪中将看到 POST 调用的以下响应:

{"authorization":{"parameters":{"tenantid":"xxxxxx49-XXXXcexxxxxx","serviceprincipalid":"xxxxxx7e-XXXX-027xxxxxxxxx","authenticationType":"spnKey","serviceprincipalkey":null,"**accesstoken":null**},"scheme":"ServicePrincipal"},"created}

原因

从 UI 运行服务连接更新调用时,请求正文 PUT 包含一个 accesstoken = null 条目。 如果将有效负载与操作任一端的工作服务连接进行比较 PUT ,则看不到此条目。 AccessToken如果属性存在于服务连接 UI 对象中,它应具有有效值(如 GUID)。 它不应为空或 null

解决方法

  1. 转到“服务连接”页,然后选择受影响的服务连接。

  2. 选择“编辑” 。

  3. F12,然后打开网络跟踪窗口。 如果可能,请在“网络”选项卡下的面板中选择“禁用缓存”选项。

  4. 更新说明。

  5. 选择“保存”按钮。

  6. 如果系统提示你进行授权,请输入所需的凭据。 在网络跟踪中,现在可以看到 PUT 调用来更新失败的服务连接。

  7. 打开 PUT 调用详细信息,并通过选择“有效负载”视图源>来复制请求有效负载>。选择内容并复制内容

  8. 从 PUT 调用详细信息中,还复制授权标头值。

  9. 在请求正文中 ,删除授权标头下的 accesstoken:null (或 accesstoken:'')属性。

  10. 复制更新 的请求有效负载,并通过运行以下 API,使用 Postman(或任何其他 REST 工具)进行服务连接更新 PUT API 调用。 进行此调用时,请确保提供之前复制的授权标头。

    PUT - https://dev.azure.com/{organization}/_apis/serviceendpoint/endpoints/{endpointId}?api-version=6.0-preview.4

有关详细信息,请参阅 终结点 - 更新服务终结点