2015-12-14 11 views
22

Zakładając, że obecnie mam nowo utworzony projekt oparty na szablonie "WebApp" programu Visual Studio 2015 z uwierzytelnianiem kont indywidualnych, używam pakietu Microsoft.AspNet.Authentication i nie zawsze mogę polegać na plikach cookie, ponieważ mój interfejs API powinien również kierować reklamy na aplikacje mobilne :Jak używać ASP.net 5 Tożsamość w aplikacji web API? Uwierzytelnianie użytkownika na podstawie tokenów. Aplikacje mobilne

Jak mogę dodać uwierzytelnianie do mojego web API? Szczególnie interesuje mnie uwierzytelnianie oparte na tokenach.

+4

nie trzymać 'uwierzytelnieni Data' w przeglądarce zachować zmiennej sesji, która byłaby' Session [ „IsAuthenticated”] 'a to byłoby prawdziwe, czy fałszywe zależności czy użytkownik/hasło przechodzi logiki/zaloguj się lub nie .. jest to bardzo proste w rzeczywistości .. przykłady wyszukiwania przykładów 'PrincipalContext Class' również istnieją sposoby na to sprawdzanie poprawności na serwerze sql itp. – MethodMan

+3

ASP.NET Web API i MVC połączyły się w MVC 6. Myślę, że przekonasz się, że możesz używać wszystkiego, czego używa MVC, ale oczywiście z Web API masz do czynienia z wywołaniami do punktów końcowych, a nie z gotowym interfejsem użytkownika. – mason

+2

Jeśli nie możesz znaleźć żadnych cennych informacji, to na pewno szukasz niewłaściwego miejsca. Fe: Google prowadzi mnie do tej strony przez 5 sekund: http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api –

Odpowiedz

3

Wprowadź niestandardowy AuthorizeAttribute w swoim projekcie aplikacji webowej. W przypadku przeciążenia IsAuthorized (HttpActionContext actionContext) można sprawdzić schemat autoryzacji i nagłówek autoryzacji, a następnie można połączyć się z dostawcą sesji i sprawdzić, czy użytkownik ma aktywną sesję. Musisz przekazać token logowania w nagłówku autoryzacji, więc jeśli brakuje tokena, oznacza to, że nie ma aktywnego użytkownika. Po zalogowaniu należy utworzyć i zaszyfrować token po pomyślnym zalogowaniu. Następnie przekazuj ten token przy każdym żądaniu na serwer.
Ten blog zawiera więcej informacji na temat korzystania AuthorizeAttribute: http://weblogs.asp.net/jongalloway/asp-net-mvc-authentication-customizing-authentication-and-authorization-the-right-way

4

Można używać podstawowego uwierzytelniania HTTP lub wdrożyć podobną jedną z tokena lub biletu przeszła przez nagłówków HTTP.

+0

Ale czy ta biblioteka, której używam, zapewnia pewien sposób wygenerować te tokeny? Czy muszę sam opracować i przechowywać te żetony, czy to już jest zrobione? – Piotrek

3

Można dokonać osobnej tabeli w db do przechowywania szczegółów uwierzytelniania (authkey, USERID CreatedDate, ExpiredDate, IsExpired) i sprawiają, że funkcje takie jak CheckAuthorizationKey (ciąg authkey), ExtendAuthorization (ciąg authkey), ExpireAuthorization (ciąg authkey) {}

i wywołaj funkcje do sprawdzania autoryzacji, jak poniżej przykładowy kod.

public ServiceResult<LoginModel> Login(string auth_key) 
{ 
      var service = new ServiceResult<LoginModel>(); 
      LoginModel user = new LoginModel(); 
      if (AuthKey.CheckAuthorizationKey(auth_key) == false) 
      { 
       service.message = TemplateCodes.GetMessage(TemplateCodes.UnAuthorize, null, db); 
       service.status = ServiceStatus.authorization_failed; 
       return service; 
      } 
Powiązane problemy