Size: a a a

GraphQL — русскоговорящее сообщество

2019 July 23

К

Кирилл in GraphQL — русскоговорящее сообщество
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
не вижу никаких проблем с JWT)
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
это просто кто-то не умеет его готовить
источник

AB

Aleksandr Bukhalo in GraphQL — русскоговорящее сообщество
ну а если серьёзно, то это оверинжинеренная технология и её можно использовать, но если ты или кто-то кто в твоей команде не сечёт в безопасности, то лучше не лезь, она тебя сожрёт инфа сотка.

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

AB

Aleksandr Bukhalo in GraphQL — русскоговорящее сообщество
для 80-90% проектов оно просто не нужно и сессии проще и лучше
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
+1
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Начав читать, подумал о как классно щас узнаю как варить правильно JWT.

Но после прочтения,
- что рефреш токен проверяет айпишник (упс, не мой вариант, я люблю через ВПНы прыгать)
- используют хранилище рефрешей
- не видно списка активных сессия, для моментального выхода со всех устройств

Ну нафиг такой огород, лучше останусь на старых добрых сессиях и секурных хттпешных куках. Код чище и проще. И нет плясок с бубном по рефрешам. В сад JWT для авторизации.
источник

AB

Aleksandr Bukhalo in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Начав читать, подумал о как классно щас узнаю как варить правильно JWT.

Но после прочтения,
- что рефреш токен проверяет айпишник (упс, не мой вариант, я люблю через ВПНы прыгать)
- используют хранилище рефрешей
- не видно списка активных сессия, для моментального выхода со всех устройств

Ну нафиг такой огород, лучше останусь на старых добрых сессиях и секурных хттпешных куках. Код чище и проще. И нет плясок с бубном по рефрешам. В сад JWT для авторизации.
ну это скорее пугалка такая, как правильно варить я сам когда-то не нашёл. 90% туториалов в стиле npm i jsonwebtoken
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
JWT прикольно использовать только в письмах, для работы над каким-то одним объектом/ресурсом.  Присылаешь письмо с редактированием объявы, и пофиг залогинен или нет – вот тебе права на изменение конкретно этой объявы.
источник

AB

Aleksandr Bukhalo in GraphQL — русскоговорящее сообщество
@nodkz я вот читал в conf-talk про твою статейку про авториазцию и вот это всё, ты используешь passportjs? Может есть где-то bolierplate с решённым вопросом авторизации реги и RBAC?
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Не поверите, мы решили точно также как в Фейсбуке.
Есть отдельный сервис который по логину, пролю и прочей ерунде ложит куку.
Мы же на графкуэль сервере проверяем куку (для веба), если нет куки то http-заголовок (для мобилок) и потом при формировании контекста лежим в базу за сессией и смотрим какие данные у нас там есть.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Т.е. у нас graphql-сервер находиться только в режиме потребления уже имеющихся индетификационных данных. Все остально проблема либо браузера либо мобилки, куда отправить человека чтоб аутентифицироваться, если получена ошибка что юзер не индетифицирован.
источник

A

Alexey in GraphQL — русскоговорящее сообщество
Abstract
И вот это @why_jwt_is_bad
Хорошая тема, спасибо.
источник

A

Alexey in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Не поверите, мы решили точно также как в Фейсбуке.
Есть отдельный сервис который по логину, пролю и прочей ерунде ложит куку.
Мы же на графкуэль сервере проверяем куку (для веба), если нет куки то http-заголовок (для мобилок) и потом при формировании контекста лежим в базу за сессией и смотрим какие данные у нас там есть.
А как вы с Csrf боретесь при авторизации по куке? Токен, или проверяете content type?
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
При ssr передаем csrf-ключ в хтмле, который подставляется в ApolloLink, который в свою очередь пробрасывает его как get параметр, типа /graphql?op=UserProfileUpdateMutation&csrf=bla-bla-bla.

Либо сессия должна быть передана через http-заголовки.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Кстати, лайфхак хозяйкам:
- проьрасывайте в гет параметры имя операции. Легче дебажить потом в нетворк табе ваши запросы. Да и в каком-нибудь грейлоге потом их фильровать.
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Кстати, лайфхак хозяйкам:
- проьрасывайте в гет параметры имя операции. Легче дебажить потом в нетворк табе ваши запросы. Да и в каком-нибудь грейлоге потом их фильровать.
👍
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Соврал про передачу csrf в гет параметрах. Чет я их давно в логах не видел. Видимо в хеадеры перенесли.

В любом случае завтра еще раз проверю. Вдруг безвозвратно отломали. 😂
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
А может посчитали что cors'ов достаточно. В любом случае завтра уточню.
источник

A

Alexey in GraphQL — русскоговорящее сообщество
Спасибо %)
источник