Защитите поток всплывающих окон OAuth - PullRequest
0 голосов
/ 17 октября 2018

По необычным причинам я должен был выполнить аутентификацию на стороне клиента самостоятельно, а не использовать библиотеку OTS.

Текущий поток:

  1. Когда пользователь запрашивает аутентификациюсоздается всплывающее окно, которое загружает URL-адрес на сервере (NodeJS), которым я управляю
  2. Сервер использует Passport для создания URL-адреса перенаправления (в зависимости от того, какой поставщик был запрошен) и перенаправляет пользователя на OAuthпровайдер
  3. Когда аутентификация завершена, провайдер перенаправляет обратно на мой собственный сервер, который (используя паспорт) проверяет, что аутентификация прошла, и генерирует JWT для использования при обращениях к моим службам на сервере
  4. сервер возвращает страницу, которая передает обратно JWT (или сообщение об ошибке) на начальную страницу (используя window.opener.postMessage)

Это все работает хорошо, но мне неудобно, открывается ли оновектор атаки для спуф-приложения, которое также может открыть тот же всплывающий URL, и сокно входа в систему будет выглядеть так же, как дурак, предоставляющий пользователю доступ к JWT.

Я сделал основы защиты, как я их вижу (проверка HTTP-рефереров, ограничение доменов на postMessage), но оникажется, что они добавляют незначительные контрольно-пропускные пункты, а не полностью решают проблему.

Что-нибудь еще, что я должен сделать, чтобы заблокировать это?

...