我有一个基于网站的Web应用程序,通过AAD登录对用户进行身份验证。成功的登录将使用访问令牌将用户重定向回应用程序(这部分使用adal_angular.js/adal.js完成)
然后,令牌被传递给一个基于站点的api,该api代表用户获得一个新的令牌,以便按照本例(https://github.com/Azure-Samples/active-directory-dotnet-webapi-onbehalfof)到目前为止的情况调用下游api。
下游api,重复此过程以获得另一个令牌,以调用进一步下游的另一个api。问题就在这里。
在这里调用AcquireTokenAsync()时,无论调用是什么,我都不会得到响应。*编辑:没有响应意味着我没有得到来自Azure的响应,使用Fiddler跟踪AcquireTokenAsync流量,我没有看到任何URL作为AcquireTokenAsync调用*的一部分被击中
我注意到,现在我使用的令牌是"user_impersonation“令牌,因为站点基础api接收的令牌不是。这有意义吗?
应该支持这个体系结构吗?
发布于 2017-03-20 03:55:27
好的,这里的问题是我自己在webapi中使用异步方法。如果在webapi中调用异步方法,则需要将自己的webapi方法标记为异步。如果ASP.Net不知道您想要在控制器中调用异步方法,它可能会导致死锁。(这里有一个很好的解释:http://blog.stephencleary.com/2012/07/dont-block-o.您不应该在web中的异步方法上使用.Result。
https://stackoverflow.com/questions/42852758
复制相似问题