【问题标题】:Getting error DirectApiRequestHasMoreThanOneAuthorization when calling logic app using HTTP trigger使用 HTTP 触发器调用逻辑应用时出现 DirectApiRequestHasMoreThanOneAuthorization 错误
【发布时间】:2021-04-12 11:31:51
【问题描述】:

我创建了一个带有 HHT 触发器响应的简单逻辑应用程序,以在 JSON 对象中进行测试,然后将其传递到团队通道中。我已经在 Postman 中成功测试了它,我将授权类型设置为“No Auth”。当我尝试使用 powershell 调用相同时,我收到错误
{"error":{"code":"DirectApiRequestHasMoreThanOneAuthorization","message":"请求同时具有 SAS 身份验证方案和 'None' 授权 方案。只能使用一种方案。"}} 下面是我正在使用的 PowerShell 代码。请建议我应该在其中更改什么。

$body ="{
      `"testName`": `"NewTest`"
      }"| ConvertTo-Json
$body  = $body | ConvertFrom-Json
$supportAreaUri = 'https://<URL>'
$supportAreaUri = [uri]::EscapeUriString($supportAreaUri)  
$Header = @{Authorization="None"}

Invoke-RestMethod -Method Post -Uri $supportAreaUri  -ContentType application/json -Body $body -Headers $Header

这是逻辑应用的截图

【问题讨论】:

    标签: azure powershell azure-logic-apps


    【解决方案1】:

    当您使用“收到 HTTP 请求时”触发器创建逻辑应用时,它将为请求生成一个 URL,例如 https://prod-04.eastasia.logic.azure.com:443/workflows/830xxxxxxxxa5ebb/triggers/manual/paths/invoke?api-version=2016-10-01&amp;sp=%2Ftriggers%2Fmanual%2Frun&amp;sv=1.0&amp;sig=l5xxxxxxxxxxzMRM。 url 受 SAS 令牌保护,SAS 令牌遵循查询字符串中的基本 url。当您在邮递员中请求时,它将在“Params”中填写查询字符串,如下图所示:

    但是当你在powershell中请求url时,你用Authorization="None"指定了header,请求方法会假设你没有使用任何身份验证并且它与SAS令牌冲突。因此它会显示您提供的错误消息The request has both SAS authentication scheme and 'None' authorization scheme

    要解决这个问题,你只需要请求没有-Header的url。

    Invoke-RestMethod -Method Post -Uri $supportAreaUri  -ContentType application/json -Body $body
    

    顺便说一句:当你请求没有-Header的url时,可能会显示这个错误信息You do not have permissions to perform action 'run' on scope '/triggers/manual/paths/'。这是由$supportAreaUri = [uri]::EscapeUriString($supportAreaUri) 引起的。其实escapeUriString是不需要的,去掉这行再请求就好了。

    【讨论】:

      猜你喜欢
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 2022-10-19
      • 2021-05-16
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多