У меня есть конечная точка webapi. Мне нужно использовать внешнюю авторизацию jwt для звонков. В основном есть несколько микросервисов. Когда вызов попадает в эту конкретную службу, у которой в заголовке есть контроллер webapi с токеном JWT, необходимо вызвать конечную точку внешнего сервера авторизации для проверки и получения взамен ролей и идентификатора.
Я уже реализовал это путем расширения 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);
}
}