带有 "user_impersonation" 个令牌的 AcquireTokenAsync 没有响应

No response from AcquireTokenAsync with "user_impersonation" token

我有一个基于站点的 Web 应用程序,它通过 AAD 登录对用户进行身份验证。成功登录将使用访问令牌将用户重定向回应用程序(这部分全部使用 adal_angular.js/adal.js 完成)

然后将令牌传递给基于 api 的站点,该站点代表用户获取新令牌以根据此示例调用下游 api (https://github.com/Azure-Samples/active-directory-dotnet-webapi-onbehalfof) 所以还不错。

下游 api,重复此过程以获取另一个令牌以调用下游的另一个 api。这就是问题所在。

在此处调用 AcquireTokenAsync() 时,我没有收到任何响应。 *编辑:无响应意味着我没有从 Azure AAD 获得响应,使用 Fiddler 跟踪 HTTP 流量,我没有看到任何 URL 作为 AcquireTokenAsync 调用的一部分被命中 *

我注意到我此时使用的令牌现在是 "user_impersonation" 令牌,而基于 api 的站点收到的令牌不是。这重要吗?

应该支持这种架构吗?

好的,这里的问题是我自己在我的网络中使用异步方法api。如果您在 webapi 中调用异步方法,您需要将自己的 web api 方法标记为异步。如果 ASP.Net 不知道您要在控制器中调用异步方法,则可能会导致死锁。 (这里有一个很好的解释:http://blog.stephencleary.com/2012/07/dont-block-o... 你永远不应该在网络中的异步方法上使用 .Result api.