2016-05-24 20 views
0

У меня есть приложение с интерфейсом MVC с использованием приложения WebApi 2 для аутентификации и авторизации. Я использую токены JWT для этого же. До сих пор мне удалось успешно аутентифицировать и получить обратно токен ... Я могу получить доступ к атрибуту ограниченного ресурса ([Авторизовать]), добавив токен авторизации в заголовок, используя инструмент POSTMAN.Значок JWT и аутентификация Owin

Authorization: “Bearer <jwt.token.string>” 

Проблема в том, что я не в состоянии перехватить вызов в трубопроводе MVC, чтобы добавить маркер в HTTPHeader. Он всегда перенаправляет меня на страницу входа. Не тот случай, когда я использую инструмент POSTMAN. Я безуспешно пытался инъекционного маркер в следующих точках:

  • Расширение атрибута Авторизоваться с пользовательской реализации
  • Добавление персонализированного ActionFilterAttribute
  • Добавление пользовательских DelegatingHandler
  • трубопровода Owin с использованием StageMarker (PipelineStageAuthenticate) в Startup.cs

Во всех вышеуказанных случаях я нахожусь в событии, потому что могу отлаживать. У меня есть сильное подозрение, что я ударяю точку авторизации до того, как я установил свой заголовок, но я не могу понять последовательность потока, чтобы правильно перехватить объект HttpContext и ввести заголовок авторизации.

ответ

0

После успешной аутентификации, добавьте

var ctx = Request.GetOwinContext(); 
      var authenticateResult = await ctx.Authentication.AuthenticateAsync(DefaultAuthenticationTypes.ExternalBearer); 
      ctx.Authentication.SignOut(DefaultAuthenticationTypes.ExternalBearer); 
      var applicationCookieIdentity = new ClaimsIdentity(authenticateResult.Identity.Claims, DefaultAuthenticationTypes.ApplicationCookie); 
      ctx.Authentication.SignIn(applicationCookieIdentity); 

Это создаст подписанное печенье и ваш атрибут Авторизовать автоматически читать кук. Впоследствии ваши запросы будут разрешены.

Смежные вопросы