2015-07-26 4 views
4

Предполагается, что у меня есть одностраничное приложение, использующее токены JWT для проверки подлинности на backend REST api. Я передаю токен JWT внутри заголовка http при выполнении запроса REST. Все идет нормально.Проверка подлинности на основе JWT для <img> тегов?

Предположим, я хочу загрузить изображение с сервера, и я хочу, чтобы изображение было доступно только для аутентифицированных пользователей. На сервере это не проблема: просто определите маршрут, который доставляет изображение, и в этом маршруте проверьте токен JWT.

Но: Как перенести токен с клиента на сервер? Если я использую обычный тег <img ...>, я не могу прикрепить токен в качестве заголовка http. Что мне делать?

В основном я могу думать о добавлении токена, например. base64, в строку запроса, но это не кажется очень надежным, так как токен появляется в истории браузера. С другой стороны, я не могу придумать другой подход, не загружая изображения полностью с помощью JavaScript.

Любые подсказки?

ответ

1

Если я думаю об Amazon S3, то подписанный URL-адрес вы хотите здесь. Поскольку вы уже предложили добавить токен в строку запроса, все будет хорошо.

О безопасности: Я думаю, что это вопрос даты истечения срока действия токена. Поскольку нет недействительности лексемы может быть, это не лучше использовать подписанные URL-адреса:

  1. Получить JWT
  2. Получить подписанный URL с этой лексемы
  3. Используйте этот URL, чтобы получить IMG

Таким образом вы можете контролировать истечение подписанного URL независимо от JWT, а также определять длину токена, используемого для подписанного URL.

+0

спасибо. Но что, если URL-адрес был скопирован пользователем и отправлен по электронной почте другому, не будет ли отображаться изображение? – Sammy

+0

Да, но, как и раскрытие его полномочий, он мог бы отдать их, так же, как и для подписанной ссылки, и в какой-то момент ссылка истекает. – pfried

+0

Как вы это делаете – Chazt3n

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