如何调试 .Net Framework AuthorizeAttribute 中的 JWT 问题

How to debug JWT issue in .Net Framework AuthorizeAttribute

我有 Asp.Net 4.6 webAPI 应用程序与 JWT 一起工作。我正在使用 Okta authorization code flow/令牌交换来获取令牌。然后我在我的所有请求中使用令牌。使用我的 Okta 开发端点时一切正常,但是当我使用我们的生产 Okta 端点时,经过身份验证的请求失败。授权和 code/token 交换工作正常,但是当我使用 [Authorize] 属性向我的 WebApi 控制器请求数据时,请求似乎没有 return 任何东西,甚至是错误。事实上 chrome 中的请求表明请求永远不会完成。 (尽管预检 OPTIONS 请求确实得到了 200)。我也可以在 Wireshark 中看到请求,并且永远不会发送响应。

最明显的答案是我的代码或生产 Okta 端点上存在配置问题,导致授权属性无提示失败.但我主要担心的是我似乎找不到调试它的方法。我尝试从 Authorize 属性继承,并覆盖所有方法以查看是否可以通过在这些方法中放置断点来确定任何内容,但是方法 OnAuthorization、IsAuthorized、HandleUnauthorizedRequest 等似乎永远不会被调用。

  1. 最好的调试方法是什么?是否有一个 Asp.Net 事件我可以挂钩以查看正在向 Okta sent/returned 验证传入令牌的内容?
  2. 为什么它默默地失败了?这似乎是一个设计上应该冒出来的错误。

这很可能是因为您的作品没有 API 访问管理。在您的预览组织中。你有 API AM 免费,所以它有效。在您的生产组织中。你得买这个功能。在每个组织上进行测试。转到 Okta 管理仪表板 > 安全 > API。您可能会看到其中一个的 "authorization servers" 选项卡,而另一个则看不到。

另一个问题可能是,如果您的问题是您的组织。 URL 然后 Okta 不给出密钥,令牌无法在本地验证。

不看你的配置很难说,但以上两种情况很常见