2015-05-25 38 views
15

Mam tradycyjną aplikację ASP.NET, którą chcę przenieść do ASP.NET 5 (vNext). Robię to jako ćwiczenie edukacyjne.Uwierzytelnianie w ASP.NET 5 (vNext)

Moja aktualna aplikacja korzysta z uwierzytelniania opartego na formularzach. Chciałbym jednak użyć OAuth. Patrzyłem na Security module i byłem ciekawy, co należy zastosować w OAuth. Widzę opcję dla Microsoft.AspNet.Authentication.OAuth i Microsoft.AspNet.Authentication.OAuthBearer.

Który z nich służy do logowania użytkownika?

Czy ktoś wie o próbce/przykładzie pokazującym je w akcji?

Odpowiedz

12

Microsoft.AspNet.Authentication.OAuth

  • Pozwala 3rd Identyfikatory firm (np Google, Facebook) do uwierzytelniania użytkowników dla Ciebie, oszczędzając użytkownikom uciążliwej rejestracji.
  • pozwala innym aplikacjom na korzystanie z aplikacji do uwierzytelniania

Gdy użytkownicy są uwierzytelniane przez 3rd partii, OWIN middle-ware czyta ich OAuth ciasteczko i tworzy plik cookie określonej domeny roszczenia opartego . Tak długo, jak plik cookie jest dostępny (obecny, nieaktualny i nieuszkodzony), użytkownicy pozostają uwierzytelnieni.

An introduction to the ASP.NET 5 Generic OAuth Provider

Microsoft.AspNet.Authentication.OAuthBearer

Tworzy znaki na okaziciela. Gdy użytkownik zaloguje się do punktu końcowego (Web-API) lub zostanie uwierzytelniony przez podmiot zewnętrzny, środek pośredni zwróci token na okaziciela. Token na okaziciela wysyłany jest wraz ze wszystkimi zgłoszeniami serwisowymi w celu identyfikacji użytkowników zamiast plików cookie.

przy starcie

app.UseOAuthBearerAuthentication(options => 
{ 
    options.Authority = "http://localhost:5000/oauth/"; 
    options.Audience = "http://localhost:5000/oauth/resources"; 

    options.TokenValidationParameters = new TokenValidationParameters 
    { 
     IssuerSigningKeys = new[] { new X509SecurityKey(cert) }, 
     ValidateLifetime = false, 
    }; 
    options.AutomaticAuthentication = true; 

    options.SecurityTokenValidators = new[] 
    { 
     new JwtSecurityTokenHandler() 
    }; 
}); 

okaziciela tokenów są wykorzystywane przy tworzeniu SPA (Single Page Application) lub do zabezpieczania AJAX żądań.

Uwierzytelnianie plików cookie jest uważane za odpowiednie dla żądań serwera. Ale punkty końcowe usługi (czy pozwalają one C ross O Rigin R esource S Haring) są bardziej narażone na CSRF i XSS ataków.


wiele aplikacji używać zarówno:

Powszechną praktyką jest stosowanie plików cookie dla uwierzytelniania żądań stron i żetonów na okaziciela o AJAX żądań.

Należy rozróżnić zasoby korzystające z plików cookie i zasobów wykorzystujących tokeny.

W tym Stackoverflow answer, Matt DeKrey zrobił dobrą robotę przedstawiając jego realizację z wykorzystaniem

[Authorize("Bearer")]

dla kontrolerów lub metod, które powinny używać okaziciela tokenów zamiast standardowego cookies w oparciu [Authorize] atrybutu.


Wiele aplikacji polegać na samych Cookies:

Jak podatny jest aplikacja do atakami CSRF gdy opierając się na ciasteczka? To jest dyskusyjne. Wiele witryn korzysta z samych plików cookie i nigdy nie napotyka problemów. Odpowiedź może zależeć bardziej od twojego poziomu natężenia ruchu i potrzeb bezpieczeństwa.

Jeśli tworzysz witrynę dla dziesiątek tysięcy użytkowników, prawdopodobnie bezpiecznie używasz plików cookie.

Jeśli obsługujesz miliony użytkowników lub chronisz ważne dane finansowe, Twoje asynchroniczne połączenia powinny opierać się na tokenach na okaziciela.


Uwaga: wspomniałeś przy użyciu uwierzytelniania formularzy, gorąco polecam korzystania Tożsamość. Platforma integruje się z OWIN po wyjęciu z pudełka, aby zapewnić oba typy funkcji.

+0

Czym jest domyślna tożsamość mechanizmu? W ASP.NET 5, jeśli po prostu wypowiedz app.Identity() i użyj atrybutu [Authorize], wszystko działa dobrze, ale skąd mam wiedzieć, czy używa uwierzytelniania na podstawie plików cookie lub Token? –

+0

@ VladimirDjurdjevic, domyślny jest autoryzacja plików cookie. Oto dobry wpis dotyczący implementacji tokenu auth http://stackoverflow.com/questions/29048122/token-based-authentication-in-asp-net-5-vnext –

Powiązane problemy