2014-09-05 11 views
7

Jaka jest najlepsza praktyka przechowywania żetonu dostępu w AngularJS po jego pobraniu z serwera autoryzacji? Widziałem wiele sugestii dotyczących korzystania z usługi localStorage, ale potem czytałem inne posty/blogi, które mówią, że nigdy nie używają localStorage do przechowywania tokenów, nie są bezpieczne itd.Żetony dostępu AngularJS dotyczące bezpieczeństwa

Mam trudności z zawijaniem głowy bezpieczeństwo z Angular z powodu mieszanych informacji jak wyżej.

+0

Co masz linki, które sugerują lokalnej pamięci nie jest dobrym pomysłem? –

+0

Nie mam ich pod ręką, ale znowu je wykopię. Jestem zaznajomiony z twoją pracą z Dominikiem i chciałbym usłyszeć twoją opinię na temat przechowywania go w lokalnej pamięci. Czy to coś, co polecasz? – user3410575

+1

Myślę, że lokalne przechowywanie jest w porządku, o ile wiesz, jak to wszystko działa. W pewnym sensie nie różni się to od trwałego cookie, którego używasz do logowania się do witryny. –

Odpowiedz

1

myślę,

  1. wygenerowania tokenu (wrażliwe info na stronie serwera)
  2. podpisywanie i szyfrowanie wygenerowanego tokena z kluczem maszynowym, który jest znany tylko z serwerem. I zdobądź zaszyfrowany token.
  3. Następnie zapisz zaszyfrowany token uzyskany w kroku 2 w ciasteczkach.
  4. Okres ważności plików cookie powinien być bardzo krótki. Utwórz plik cookie httponly.

Po uwierzytelnieniu plik cookie

  1. walidacji cookie
  2. Deszyfruj z klucza maszynowego i sprawdzić, czy jest wysyłany tylko przez nasz serwer i z tego samego CRC.
  3. Uwierzytelnij otrzymany token, jeśli powyższy krok 2 jest dobry.

angularjs Automatyczne dodawanie nagłówków w każdym żądaniu http $

AngularAppFactory.GetApp=function(appName){ 
    var app = angular.module(appName, []); 

    app.factory('httpRequestInterceptor', ['$rootScope', function($rootScope) 
    { 
     return { 
      request: function($config) { 
      if($rootScope.user.authToken) 
      { 
       $config.headers['id'] = $rootScope.user.id; 
       $config.headers['auth-token'] = $rootScope.user.authToken; 
      } 

      return $config; 
     } 
    }; 
    }]); 

    app.config(function ($httpProvider) { 
     $httpProvider.interceptors.push('httpRequestInterceptor'); 
    }); 

    return app; 
} 



//Whenever you need to get new angular app, you can call this function. 
app = AngularAppFactory.GetApp('appName'); 
+0

Próbuję to zrobić. Brak niektórych szczegółów implementacji. Mam aplikację mvc asp.net, która obsługuje logikę logowania, ustawia plik cookie uwierzytelniania, a następnie przekierowuje do aplikacji kątowej. Logika logowania obejmuje wywoływanie punktu końcowego tokena w interfejsie internetowym na innym serwerze. Kiedy dostaję to z powrotem, przechowuję ten token w ciasteczku. Ale jak wysłać ten token z powrotem do webapi z kanciastych bez ręcznego umieszczania go w nagłówku autoryzacji? – user3410575

Powiązane problemy