2014-05-07 10 views
6

Pracuję z samohostowaną aplikacją OWIN i próbuję wymyślić, jak wymagać uwierzytelnienia/autoryzacji dla wszystkich żądań (lub dowolnych żądań).Wymagaj uwierzytelnienia dla wszystkich wniosków do aplikacji OWIN

Niektóre poszczególne elementy w rurociągu mają własne urządzenia do autoryzacji (np. WebAPI, SignalR, Nancy), ale wydaje się to zbyteczne, gdy chcę ograniczyć wszystko. Ponadto, niektóre produkty pośrednie nie mają obsługi autoryzacji (np. Microsoft.Owin.StaticFiles).

Jeśli moja OWIN Uruchomienie wygląda mniej więcej tak:

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

Jak mogę wymagać od użytkownika uwierzytelnienia (przekierowanie jeśli to konieczne) przed podaniem przeglądarkę katalogów? (Przeglądarka katalogów może dowolnie być innymi komponentami OWIN.)

+0

Jakakolwiek pełna próbka w github? nie publiczny wniosek do OWIN? – Kiquenet

Odpowiedz

22

Umieść to między oprogramowaniem pośrednim Auth a komponentami, które chcesz chronić. Sprawdza, czy każde żądanie jest uwierzytelnione.

 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(); 
     }); 
Powiązane problemy