我有一个webapi端点。我需要对调用使用外部jwt授权。 基本上有几种微服务。当呼叫到达此特定服务时,该服务具有标有JWT令牌的webapi控制器,则需要调用外部授权服务器端点以进行验证并获取角色和身份作为回报。
我已经通过扩展AuthorizationFilterAttribute实现了这一点。但是我正在考虑使用OWIN。有没有一种方法可以通过OWIN进行处理,当请求到达控制器时,它会进行拦截,验证令牌。
注意:如果令牌无效,我只需要取消授权即可。
添加代码:
[JwtAuthorizationFilter]
public class abcController : ApiController
{
}
public class JwtAuthorizationFilterAttribute : AuthorizationFilterAttribute {
public override void OnAuthorization(HttpActionContext actionContext) {
try {
//Parse and get token from Header
var requestToken = FetchRequestTokenFromHeader(actionContext);
//Call(postasync) external enpoint to validate the token and get jwtdetails
var validationResponseMessage = JwtValidation(requestToken, actionContext);
//crate a generic identity and set actioncontext
ParseValidationResponseMessage(actionContext, validationResponseMessage);
} catch (Exception exception) {
Logger.Info("Exception on authorization: " + exception.Message);
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.InternalServerError);
}
}