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

时间:2019-04-20 22:42:45

标签: c# asp.net asp.net-web-api jwt okta

我有使用JWT的Asp.Net 4.6 webAPI应用程序。我正在使用Okta authorization code flow /令牌交换来获取令牌。然后,我在所有请求中都使用令牌。使用我的Okta开发端点时,一切正常,但是当我使用生产Okta端点时,通过身份验证的请求失败。授权和代码/令牌交换工作正常,但是当我使用[Authorize]属性向WebApi控制器请求数据时,该请求似乎没有返回任何内容,甚至没有错误。实际上,Chrome中的请求表明该请求从未完成。 (尽管印前检查OPTIONS请求确实得到了200)。我还可以在Wireshark中看到请求,并且永远不会发送响应。

最明显的答案是,我的代码中或生产Okta端点上存在配置问题,导致Authorize属性静默失败。但我主要担心的是,我似乎无法找到一种对其进行调试的方法。我尝试从Authorize属性继承,并覆盖所有方法以查看是否可以通过在这些方法中放置断点来确定任何东西,但是OnAuthorization,IsAuthorized,HandleUnauthorizedRequest等方法似乎从未被调用。

  1. 哪种是在那里调试的最佳方法?我可以加入一个Asp.Net事件以查看正在发送/返回给Okta的内容以验证传入令牌吗?
  2. 为什么它会默默地失败?设计上似乎应该冒出这样的错误。

1 个答案:

答案 0 :(得分:0)

这很可能是因为您的产品没有API访问管理。在您的预览组织中。您可以免费使用API​​ AM,因此可以使用。在您的生产组织中。您必须购买该功能。在每个组织上进行测试。转到Okta管理控制台>安全性> API。您可能会看到其中一个的“授权服务器”选项卡,而没有另一个。

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

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