401有一个有效的熊牌,可能会出错?

时间:2017-08-28 20:57:08

标签: angular cors .net-core azure-active-directory bearer-token

我应该如何查找/追踪这样的问题:

我们有一个Angular应用程序调用.Net Core Web API,启用了CORS,并通过Azure AD进行身份验证,获取Bearer令牌。使用Bearer令牌,API调用会在401 Unauthorized时不时失败,其他时间为200.但我将相同的Bearer Token放入任何REST客户端,并且API调用始终有效。

非常感谢任何意见。

更多上下文/分析:

  • API适用于其他应用程序。所以,如果问题出现了 在服务器端,它不是代码中经常执行的部分。该 问题可能在客户端Angular代码。
  • 这个Angular应用程序是 唯一的应用程序使用CORS。这显然是我正在研究的内容。

  • 此Angular应用程序的本地开发服务器(Webpack dev服务器)和部署服务器(IIS)是不同的,但产生 相同的结果,所以它可能不是服务器配置问题。

  • 将200响应与401请求进行比较,我看到Bearer令牌同时工作。
  • 将200响应与401响应进行比较,我看到头文件CORS同时工作。
  • 由于它提供了401,并且似乎没有实际到达Web API,因此它与身份验证相关。但我根本不了解这个过程。有什么见解吗?

1 个答案:

答案 0 :(得分:1)

我明白了。 比赛条件。当它试图检索它时,还没有可用的承载令牌。 当我在REST客户端中手动执行API调用时,令牌可用。只有当我有一些后续的API调用而不管第一个API调用时,我才能更快地识别出这个问题。

简单的超时会证明它有效。

我们将优化承载令牌存储和一些缓存管理,以获得永久性解决方案。