2015-09-30 6 views
11

У меня есть larevel REST API, который использует tymondesigns/jwt-auth для аутентификации и хочет масштабировать приложение с одного сервера на несколько серверов с помощью балансировки нагрузки спереди.Может ли Jwt-Auth в laravel обрабатывать недействительные токены в конфигурации с несколькими серверами?

В потоке используется промежуточное ПО RefreshToken, и по существу токен признается недействительным после каждого запроса, а новый возвращается вместе с ответом. (https://github.com/tymondesigns/jwt-auth/wiki/Authentication)

Как jwt собирается управлять недействительными токенами в конфигурации с несколькими серверами, где токен недействителен с использованием одного сервера, а новый запрос с использованием недействительного токена попадает на другой сервер?

+1

Зачем нужен новый запрос с недействительным токеном? Не получает ли пользователь новый действительный токен? – Alex7

+1

, что касается безопасности. Если хакер получает недействительный токен (игнорируя то, как он получает его часть), этот токен не может быть признан недействительным для другого сервера в конфигурации кластера. Следовательно, он может использовать его действительные запросы. – Danny

ответ

2

Правильный способ заключается в том, чтобы включить jti claim вместе с exp и iat.

Другой способ (если можно) включить в токен идентификатор сервера (или уникальный ключ). Вы можете реализовать протокол jwt от сервера к серверу, но я думаю, что это будет дорого.

Другой способ - синхронизировать токены между серверами. Я бы использовал демон memcached (возможно, на вашем переднем сервере), который будет содержать список новых недействительных токенов. Если токен действителен только для одного запроса, memcached получит недействительный токен сразу после его использования (возможно, прямо в промежуточном программном обеспечении RefreshToken). Основываясь на отметке времени маркера, вы можете решить, является ли токен недействительным (без перехода на сервер memcached), или, если он довольно новый, вы проверите в списке memcached , потребляемых токенами. Memcached также будет иметь срок действия. Есть много преимуществ этого метода (например, вы можете использовать теги). Если вы думаете об этом списке как файле журнала, вы все равно можете сказать, что не сделали недействительным принцип без гражданства :)

Надеюсь, что это поможет.

+0

это должно быть принято. Проходил мимо моих старых вопросов. Лучше поздно, чем никогда. – Danny

 Смежные вопросы

  • Нет связанных вопросов^_^