【发布时间】:2018-03-06 15:16:50
【问题描述】:
我有一个 .NET 4.5 API 应用程序。它受 OWIN/Oauth 保护。我用 POSTMAN 打电话并伪造 Bearer 令牌,所以我可以测试这个案例。
validateToken函数发现JWT令牌被操纵/无效后如何中断代码执行?
ClaimsPrincipal principal = handler.ValidateToken(protectedText, _validationParameters, out validToken);
此行返回一个 SecurityTokenException。我像这样捕获异常:
catch (SecurityTokenException ex)
{
var msg = new HttpResponseMessage(HttpStatusCode.Unauthorized) { ReasonPhrase = "Access Token is manipulated" };
throw new HttpResponseException(msg);
}
之后应用程序继续执行并进入我通过邮递员调用的 ApiController 的构造函数,该构造函数受 [Authorize] 保护,而不是给我一个带有 401 Unauthorized 的 HTTPResponse
附:这是ApiController中构造函数的代码
public class TicketController : ApiController
{
private readonly TicketService _svcTicket;
public TicketController()
{
try
{
_svcTicket = new TicketService(JwtFormat.AppContext);
}
catch (SecurityTokenException ex)
{
var msg = new HttpResponseMessage(HttpStatusCode.Unauthorized) { ReasonPhrase = "Access Token is manipulated" };
throw new HttpResponseException(msg);
}
catch (Exception ex)
{
throw ex;
}
}
}
【问题讨论】:
-
这个函数的调用者是否捕获了 HttpResponseException?
-
调用者是工具POSTMAN。我编辑了我的帖子并添加了 Api Controller 构造函数
标签: c# .net exception-handling jwt