&引用;此请求的授权已被拒绝”;访问Azure中部署的Web API时

&引用;此请求的授权已被拒绝”;访问Azure中部署的Web API时,azure,oauth-2.0,asp.net-web-api2,adal,Azure,Oauth 2.0,Asp.net Web Api2,Adal,就这一问题采取以下行动: 我现在已成功使web应用程序使用此安全模型运行: SPA应用程序使用adal.js/adal_angular.js通过AAD进行身份验证。 返回的令牌被传递给在同一台机器上运行的web api[API1]。 该web api代表用户获取一个新令牌以访问下游api[API2] 下游api代表用户获取一个新令牌以访问另一个下游api[API3] 现在,当我在本地运行[API2]时,这一切都正常了。 但是,当我将该web应用部署到我的Azure订阅中并尝试调用它时(除了[A

就这一问题采取以下行动:

我现在已成功使web应用程序使用此安全模型运行: SPA应用程序使用adal.js/adal_angular.js通过AAD进行身份验证。 返回的令牌被传递给在同一台机器上运行的web api[API1]。 该web api代表用户获取一个新令牌以访问下游api[API2]

下游api代表用户获取一个新令牌以访问另一个下游api[API3]

现在,当我在本地运行[API2]时,这一切都正常了。
但是,当我将该web应用部署到我的Azure订阅中并尝试调用它时(除了[API1]的REST API调用中的url之外,不更改任何其他内容),我会得到以下结果:

{"Message":"Authorization has been denied for this request."}
在Fiddler跟踪中似乎没有返回任何其他错误详细信息。比较有效调用和无效调用之间的jwt令牌有效负载并不能揭示太多。除了到期声明和“扣押入息令”(不确定是什么)之外,它们看起来是一样的

唯一的更改是部署的web应用程序的URL(来自
http://localhost:8080/
to)

请注意,web应用部署到与应用注册和[API3]所在位置不同的广告租户中,但我认为这并不重要

对于部署时可能需要更改的内容,或者如何进一步排除故障,有什么想法吗

更新:请求与Curl一起工作

使用curl发出相同的请求是有效的:

curl -H "Authorization: Bearer ey..." http://mywebapi.azurewebsites.net/api/resource
GET http://mywebapi.azurewebsites.net/api/resource HTTP/1.1
Host: mywebapi.azurewebsites.net
User-Agent: curl/7.46.0
Accept: */*
Connection: Keep-Alive
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJ<snip>
所以问题似乎是我如何在我的C#代码中发出请求?比较Fiddler中的标题,我看不出有什么不同。 这是curl的Fiddler轨迹,正在工作:

curl -H "Authorization: Bearer ey..." http://mywebapi.azurewebsites.net/api/resource
GET http://mywebapi.azurewebsites.net/api/resource HTTP/1.1
Host: mywebapi.azurewebsites.net
User-Agent: curl/7.46.0
Accept: */*
Connection: Keep-Alive
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJ<snip>
在Azure网站日志中,我可以看到成功的curl请求的身份验证类型是“JWT”,但是对于来自我的代码的失败请求,它们是“匿名的”。
尽管标题在Fiddler跟踪中正确显示,但它必须被剥离?这可能吗?

在一个不相关的问题中,我不得不从我的机器上删除所有不受信任的证书(Internet选项->内容->证书)。 我注意到这样做之后,我的问题就解决了。这是一个很长的证书列表,所以我不知道是哪一个(多个)导致了问题,或者为什么。

鉴于缺乏回应,这显然是一个非常模糊的问题,但不幸的是,我们没有找到问题的根源。如果再次出现这种情况,我可以更加有条不紊地进行操作。

因为您提到了两个租户,您的用户尝试登录的是哪个租户?该用户属于创建应用注册的租户[T1]。web应用已部署到不同的azure订阅,但是在startup_auth.cs中配置的有效访问群体和租户仍被配置为在T1中使用租户和访问群体进行应用注册。您是否为在azure portal上部署的应用启用了身份验证/授权?最初不是,但我试着把它打开,但似乎没有什么不同。这是打开还是关闭,如果打开,应如何配置?e、 g.代币店?应该关闭。由于您已经在代码中完成了身份验证,因此不应再次使用身份验证/授权功能。我还建议您通过以下方式获取详细信息。