@symfony_php

Страница 273 из 1418
Daniel
19.08.2017
15:13:49
Надо срочно понять

В Sentry прям жестко указан лимит сообщения в 1000 символов?

Нет времени разбираться, просто у меня INFO с данными запроса и INFO с данными ответа - не влезает

.D

Google
Daniel
19.08.2017
15:32:58
\Raven_Client::MESSAGE_LIMIT

2:

Raven_Util::set($options, 'message_limit', self::MESSAGE_LIMIT)

Alexey
19.08.2017
19:37:44
Кто нибудь использовал fractal для сериализации различных выборок в json формат. Или это лишний оверхед и serializer symfony вполне достаточно?

Sergey
19.08.2017
20:12:11
@fes0r вроде топил за фрактал

Sergey
20.08.2017
09:31:37
@fes0r вроде топил за фрактал
да, топил. сейчас уже не так активно

я сейчас думаю как его видоизменить что бы упростить работу с ним

ну мол.... если у тебя active record то фрактал вообще хорошо

а так... есть вопросы

Alexey
20.08.2017
12:25:55
Кто нибудь использует у себя на проект аутентификацию с использованием jwt? Мне интересен вопрос, как организвать выход с нескольких устройств или блокировку токена. Пока думаю при логине записывать так же токен в redis или memcahed типо: auth:[user_id]:token и проверять если такой токен если нет значит бросаем на страничку входа и для этого будет необходимо реализвать свой кастомный провайдер аутентификации (токен, листенер, фабрику). И еще интересует refresh токен. Я правильно понимаю, что если человек пришел с истекшим jwt токеном, то мы идем ищем его в базе и если есть refresh токен, то генерируем новый access?

Виктор
20.08.2017
12:35:43
зачем что-то хранить в базе и использовать jwt?

сам по себе jwt - это фактически хранилище информации

могу ошибаться - но по-моему совмещать нет смысла - используй любой ИД для токена и храни в базе тогда все

Google
Sergey
20.08.2017
12:44:45
вопервых стоит определиться зачем тебе refresh токены

обычно их используют для усложнения MITM атак

ну мол кто-то перехватил токен и это может быть только на определенное время

другой вариант зачем нужны рефреш токены - если нет другого способа инвалидировать сессию.

Gaiaz Iusipov
20.08.2017
12:46:12
Есть, должен быть.

Sergey
20.08.2017
12:46:53
использовать же рефреш токены для инвалидации сессиий по времени - не очень затея

лучше организовать блэк лист для инвалидации нужных токенов

Gaiaz Iusipov
20.08.2017
12:47:26
Если у пользователя крадут пару токенов то хакер зарефрешит у себя и пользователь останется неавтортзован Далее он авторизовывается и инвалидная пара у хакера уже

Думаю что-то все таки хранить надо

Но не уверен

Sergey
20.08.2017
12:48:39
Думаю что-то все таки хранить надо
зачем хранить токены все если тебе нужно только иметь возможность инвалидировать оные?

и не все а лишь часть

Gaiaz Iusipov
20.08.2017
12:50:08
зачем хранить токены все если тебе нужно только иметь возможность инвалидировать оные?
Каким образом инвалидировать, помимо expired on в самом токене?

Sergey
20.08.2017
12:50:32
зависит от задачи. В большинстве случаев мне надо инвалидировать все сессии пользователя

а это значит что я просто добавляю ID нужного пользователя в блэклист

ну то есть в JWT у нас есть время выдачи токена, время действия, есть идентификатор пользователя

это дает тебе возможность реализовать самые разные механизмы инвалидации

Gaiaz Iusipov
20.08.2017
12:51:39
А как инвалидтровать пару жвт и рефреш?

Sergey
20.08.2017
12:52:03
с рефрешами все просто - тебе сервер аунентификации просто не выдаст новый токен

Google
Sergey
20.08.2017
12:52:09
рефрешы у тебя в базе хранятся

а вот jwt - просто не пускаешь, кидаешь 401

клиент должен в этом случае просто разлогинить

запись в блэклисте можно хранить на период на который ты выдаешь людям jwt токены

Gaiaz Iusipov
20.08.2017
12:52:41
Ну так как я инвалидирую то его

Sergey
20.08.2017
12:52:53
Ну так как я инвалидирую то его
перечитай еще раз что я написал.

Gaiaz Iusipov
20.08.2017
12:53:06
Перевариваю про блек лист

Sergey
20.08.2017
12:53:34
тебе придет запрос с JWT для пользователя в блэк листе сессиий. Например мы добавили правило "считай невалидными все JWT токены этого чела которые он получал до такого-то времени"

и если твой токен подпадает под правило - просто не пускаешь дальше

а поскольку блэклист у тебя будет относительно небольшим (малый процент всех пользователей)

то как бы нет проблем

Gaiaz Iusipov
20.08.2017
12:56:43
Такая ситуация. Пользователь прошел аутификацию, авторизовали его Хакер украл пару Через 5 минут хакер рефрешнул себе пару Пользователь заново недоумевая аутифицируется и авторизовывается Вопрос как инвалидировать пару у хакера не трогая пару пользователя

Sergey
20.08.2017
12:58:28
и как ты собрался это инвалидировать?)

ну то есть

по другому

зачем тебе это инвалидировать если никто не жаловался? с точки зрения сервера ты можешь максимум затрекать что внезапно токены эти начали приходить с совсем другого IP

Gaiaz Iusipov
20.08.2017
12:59:23
Я вот и спрашиваю ? я хз как, но такой вариант работы видел при изучении

Sergey
20.08.2017
12:59:47
прикол в том что нам нельзя просто дропнуть сессию пользователя

если у него внезапно поменялся IP это может быть по вполне обычным причинам

Gaiaz Iusipov
20.08.2017
13:00:27
Google
Sergey
20.08.2017
13:02:16
можно еще по юзерагенту сверять

Gaiaz Iusipov
20.08.2017
13:02:39
прикол в том что нам нельзя просто дропнуть сессию пользователя
Ну вот надо) вроде как то возможно, надо поизучать

когда происходит рефреш - ты узнаешь IP
Да но для других серверов все ок. Они про юзер агент как и про сменившийся айпи не в курсе

Admin
ERROR: S client not available

Gaiaz Iusipov
20.08.2017
13:04:08
можно еще по юзерагенту сверять
Так же как и айпи не можем

Sergey
20.08.2017
13:08:57
ну и ты можешь прямо в JWT записать какому IP ты доверяешь

что бы зафорсить рефреш в случае смены IP

все очень от задачи зависит

Alexey
20.08.2017
13:10:15
@fes0r А какой флоу при использовании refresh токена. Приходит пользватель => истек срок => достаем id пользователя => ищем в базе, если есть то новый токен? Но что будет если кто-то перехватил токен => тогда держим его в блэклисте и при рефреше проверяем токен?

Sergey
20.08.2017
13:10:47
эм...

если jwt истек - клиент отправляет запрос с рефреш токеном на получение нового

рефреш токены хранятся в базе, это просто набор рандомных байт

Alexey
20.08.2017
13:11:32
Но на клиенте не хранится рефреш

Sergey
20.08.2017
13:11:38
так что ты не по ID юзера достаешь а по токену

при атворизации ты получаешь пару токенов

jwt + refresh

Google
Sergey
20.08.2017
13:11:59
во всех запросах юзаешь только jwt

для получения нового jwt юзаешь только refresh и получаешь новую пару

а это значит что если у тебя один пользователь успешно обновил себе пару токенов и потом послал старый - значит что-то не то

Alexey
20.08.2017
13:13:07
@fes0r Спасибо. Наконец-то понял)

Gaiaz Iusipov
20.08.2017
13:13:07
Рефреш нужен для auth сервера для обновления пары при истечения expiredOn

это зависит от задачи.
Это вообще универсальный ответ. Очевидно не просто же так спрашиваю)

Alexey
20.08.2017
13:14:26
А как быть в случае аутентификации с различных устройств, если refresh меняется?

Sergey
20.08.2017
13:15:08
ну то есть типа как "несколько сессий"

а вообще лайфхак - берешь auth0 и делаешь все на нем)

5 баксов в месяц каких и у тебя там все, и инвалидация сессий, и управление сессиями пользователей, и восстановление пароля

Антон
20.08.2017
15:40:25
правда ли что функционал баднлов удалят из симфони?

если я делаю монолитное приложение достаточно использовать AppBundle для проекта?

Страница 273 из 1418