Проблемы безопасности токена доступа AngularJS

Как лучше хранить токен доступа в AngularJS после его получения с сервера авторизации? Я видел много предложений использовать сервис localStorage, но потом я прочитал другие посты / блоги, в которых говорится, что никогда не использовать localStorage для хранения токенов, это небезопасно и т. Д.

Мне трудно сосредоточиться на безопасности с Angular из-за смешанной информации, как описано выше.

1 ответ

Решение

Я думаю,

  1. Генерация токена (конфиденциальная информация на стороне сервера)
  2. Подписать и зашифровать сгенерированный токен с помощью машинного ключа, который известен только серверу. И получите зашифрованный токен.
  3. Затем сохраните зашифрованный токен, полученный на шаге 2, в куки.
  4. Срок годности печенья должен быть очень меньше. Сделать httponly cookie.

При аутентификации куки

  1. Проверить куки
  2. Расшифруйте ключом машины и убедитесь, что он отправляется только нашим сервером и с тем же ключом crc.
  3. Аутентифицируйте полученный токен, если шаг 2 выше хорош.

Angularjs Автоматически добавляет заголовки в каждом запросе $ 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');
Другие вопросы по тегам