получить httponly cook ie настойчивость через закрытие приложений - PullRequest
1 голос
/ 26 мая 2020

В настоящее время я использую аутентификацию на основе httponly cook ie для аутентификации пользователей через веб-сайт. Вдобавок к этому я создаю собственное приложение для реагирования, которое также должно аутентифицировать пользователей, в идеале через ту же конечную точку. На этом этапе пользователи могут войти в систему через приложение, и повар ie правильно отправляет при каждом последующем запросе с использованием credentials: 'include' (выборка) . Однако, если приложение перезапущено, Cook ie не сохраняется.

Пока что мой поиск привел меня к следующим возможным обходным путям:

  • Управляйте файлами cookie вручную путем извлечения Cook ie через что-то вроде webview или response-native-cookies, сохраняя cook ie в хранилище и вручную добавляя его в каждый последующий запрос.
  • Реализуйте новую конечную точку, которая возвращает токен и имеет два потока аутентификации, один для веб-сайта и один для приложения.

Был ли кто-нибудь в подобной ситуации? Можете ли вы указать мне правильное направление, чтобы не усложнять мою базу кода и убедиться, что я не уязвим для XSS или другого токена / повара ie кража.

Заранее спасибо.

1 Ответ

2 голосов
/ 27 мая 2020

Если честно, я никогда не реализовывал аутентификацию на основе cook ie в react native. Как вы теперь обрабатываете файлы cookie? В основном поток должен быть таким:

  1. Вы аутентифицируетесь с помощью имени пользователя и пароля.
  2. Сервер ответит заголовком «Set-Cook ie: sessionIdExample = 1234»
  3. В следующий раз, когда вы сделаете запрос, вы также должны отправить этого повара ie, что означает, что вам нужно установить заголовок «Повар ie: sessionIdExample = 1234»

Из вашего вопроса Думаю, вы не устанавливаете этот cook ie вручную, поэтому, скорее всего, http-клиент сделает это за вас. Теперь, когда вы закрываете приложение, которое готовит ie значение теряется, как вы сказали. Обратите внимание, что переход на аутентификацию на основе токенов в этом не поможет. Итак, что вам следует делать:

  1. Войти с именем пользователя и паролем.
  2. Когда вы получите этот сеанс, приготовьте ie сохраните его. Вы можете проверить asyn c -storage или более безопасную цепочку ключей response-native-keychain для сохранения данных.
  3. Для следующих запросов установите ie приготовление сеанса вручную.
  4. При закрытии приложение, а затем откройте его снова, проверьте свое хранилище asyn c или связку ключей, если у вас уже есть сохраненный файл cook ie. Если да, установите для этого повара ie, и все должно работать нормально.
...