2014-05-07 10 views
6

Sto lavorando con un'applicazione OWIN self-hosted e sto cercando di capire come richiedere l'autenticazione/autorizzazione per tutte le richieste (o richieste arbitrarie).Richiede l'autenticazione per tutte le richieste a un'applicazione OWIN

Alcuni dei singoli componenti nella pipeline dispongono di proprie strutture di autorizzazione (ad esempio WebAPI, SignalR, Nancy) ma ciò sembra un po 'ridondante quando voglio limitare tutto. Inoltre, alcuni middleware non dispongono di supporto per l'autorizzazione (ad esempio Microsoft.Owin.StaticFiles).

Se il mio avvio OWIN simile a questa:

public class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     app.RequireSsl(); 

     app.UseCookieAuthentication(new CookieAuthenticationOptions()); 
     //... 
     app.UseGoogleAuthentication(); 

     // ** Need to add something that restricts access ** 

     app.UseDirectoryBrowser(); 
    } 
} 

Come faccio a richiedere all'utente hanno autenticato (reindirizzamento se necessario) prima di servire il browser di directory? (Il browser di directory potrebbe essere arbitrariamente altri componenti OWIN.)

+0

qualsiasi esempio completo in github? richiesta non pubblica a OWIN? – Kiquenet

risposta

22

Metti questo tra il tuo middleware auth e i componenti che desideri proteggere. Verificherà per garantire che ogni richiesta sia autenticata.

 app.Use(async (context, next) => 
     { 
      var user = context.Authentication.User; 
      if (user == null || user.Identity == null || !user.Identity.IsAuthenticated) 
      { 
       context.Authentication.Challenge(); 
       return; 
      } 
      await next(); 
     }); 
Problemi correlati