2016-05-24 10 views
0

Ich habe MVC-Front-End-Anwendung mit WebApi 2-Anwendung für Authentifizierung und Autorisierung. Ich benutze JWT Token für das gleiche. Bisher konnte ich ein Token erfolgreich authentifizieren und empfangen ... Ich kann weiter auf die eingeschränkte Ressource zugreifen (Attribut [Autorisieren]), indem ich ein Autorisierungs-Token mit dem POSTMAN-Tool zum Header hinzufüge.JWT-Token und Owin-Authentifizierung

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

Ausgabe, ich bin nicht in der Lage den Anruf in MVC-Pipeline abzufangen den Token an den Httpheader hinzuzufügen. Es leitet mich immer auf die Login-Seite zurück. Nicht der Fall, wenn ich das POSTMAN-Tool verwende. Ich habe erfolglos versucht, den Token zu folgenden Punkten Injektion:

  • Ausziehbarer Autorisieren
  • Hinzufügen eines benutzerdefinierten Action
  • mit benutzerdefinierten Implementierung Attribut Hinzufügen von benutzerdefinierten DelegatingHandler
  • Owin Pipeline unter Verwendung StageMarker (PipelineStageAuthenticate) in Startup.cs

In allen obigen Fällen treffe ich das Ereignis, weil ich debuggen kann. Ich habe starken Argwohn, dass ich den Berechtigungspunkt treffe, bevor ich meine Überschrift setze, aber ich kann Fließsequenz nicht herausfinden, um das HttpContext-Objekt richtig abzufangen und den Autorisierungsheader zu injizieren.

Antwort

0

Nach erfolgreicher Authentifizierung hinzufügen

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); 

Dies wird ein signiertes Cookie und Ihre Autorisieren Attribut erstellen wird das Cookie automatisch eingelesen. Alle Ihre Anfragen werden später autorisiert.