Выпуск, доступ и использование токенов API с Laravel 5 и Angular 4

Я создаю SPA с Laravel 5.5 и Angular 4. Я не совсем понимаю, каков "лучший" (безопасный, надежный, лучший метод и т. Д.) Способ аутентификации моих запросов API. В настоящее время у меня есть традиционная система входа в систему на основе сеансов, которая после входа пользователя перенаправляет на страницу индекса моего приложения Angular, где содержится вся информация приложения. Все последующее взаимодействие с сервером осуществляется через вызовы API.

Следуя некоторым основным урокам, у меня есть следующая настройка: каждому пользователю назначается случайная строка из 60 символов, которая служит их API-токеном. После того, как они вошли в систему, используя свое имя пользователя и пароль, токен API выводится непосредственно в HTML в meta тег в шапке. Затем Angular захватывает этот токен и передает его в заголовок каждого вызова API.

Однако с тех пор я прочитал, что токены не должны передаваться по соединениям, отличным от SSL (чтобы избежать атак "человек посередине"), и что токены должны автоматически генерироваться / устанавливаться с истечением срока действия и т.д.

Итак, мои вопросы:

  • Для одностраничного приложения используются только внутренние вызовы API (не междоменные). Разумно ли передавать таким образом незашифрованные токены API?
  • Можно / безопасно выводить токен API непосредственно в HTML в метатеге?

В последнем пункте, это, кажется, стандартная практика для использования токена Laravel CSRF? Возможно я только что прочитал слишком много параноидальных сообщений в блоге?

1 ответ

В современном веб-программировании никогда не бывает слишком много токенов. Есть токены доступа, токеныобновления, токеныанти-XSRF и многое другое.

Это последний тип токена, о котором я недавно получил много вопросов. В частности, нужно ли защищаться от подделок межсайтовых запросов при создании приложения на основе API?

В любом приложении, где браузер может неявно аутентифицировать пользователя, вам нужно будет защитить себя от подделки межсайтовых запросов. Неявная аутентификация происходит, когда браузер отправляет информацию аутентификации автоматически, что имеет место при использовании файлов cookie для аутентификации, а также для приложений, использующих аутентификацию Windows.

Как правило, API не используют куки для аутентификации. Вместо этого API обычно используют токены-носители, и пользовательский код JavaScript, выполняемый в браузере, должен отправлять токен, явно добавляя токен в запрос.

Однако существуют также API-интерфейсы, которые находятся внутри того же серверного процесса, что и веб-приложение, и используют тот же файл cookie, что и приложение для аутентификации. Это тип сценария, в котором вы должны использовать токены защиты от подделки для предотвращения XSRF.

Ваш проект или приложение:

  1. Laravel - это ваши API-сервисы
  2. Angular 4 - ваше клиентское приложение

Наилучшим способом является использование сервисов на основе токенов, а ссылка ниже - для laravel 5.5 для создания токенов и аутентификации токенов, а также для пользователей, использующих apis: https://laravel.com/docs/5.5/passport

Другие вопросы по тегам