Size: a a a

Node.js — русскоговорящее сообщество

2020 February 05

A

Alex CherryTea in Node.js — русскоговорящее сообщество
Ihor Levchenko
вот мне и интересно.

Я вижу где JWT реально хорош - это в комплекте с сессиями в микросервисах.
Где мы можем немного снять нагрузку с хранилища сессий и просто по сессии которая хранится исключительно в куках логин сервера, обращаемся к нему по CORS-у, и просто получаем 5 минутный access token и юзаем его для запросов.
+
источник

IL

Ihor Levchenko in Node.js — русскоговорящее сообщество
Ihor Levchenko
вот мне и интересно.

Я вижу где JWT реально хорош - это в комплекте с сессиями в микросервисах.
Где мы можем немного снять нагрузку с хранилища сессий и просто по сессии которая хранится исключительно в куках логин сервера, обращаемся к нему по CORS-у, и просто получаем 5 минутный access token и юзаем его для запросов.
мне интересно чтобы еще кто-то прочитал мою эту писанину и сказал на сколько это более менее подход, а то без разговора с коллегами можно в тупик страшный зайти
источник

IL

Ihor Levchenko in Node.js — русскоговорящее сообщество
и вообще интересно, какие есть еще альтернативы аутентификациям/авторизациям глобальные?
Ну кроме сессий и JWT и их комбинаций.

OpenID?
источник

倫岡

倫太郎 岡部 in Node.js — русскоговорящее сообщество
Ihor Levchenko
вот мне и интересно.

Я вижу где JWT реально хорош - это в комплекте с сессиями в микросервисах.
Где мы можем немного снять нагрузку с хранилища сессий и просто по сессии которая хранится исключительно в куках логин сервера, обращаемся к нему по CORS-у, и просто получаем 5 минутный access token и юзаем его для запросов.
и как сохранять gdpr тогда?
или обновлять данные юзера в токене?
источник

A

Alex CherryTea in Node.js — русскоговорящее сообщество
Для микросервисов jwt самое оно
источник

倫岡

倫太郎 岡部 in Node.js — русскоговорящее сообщество
Alex CherryTea
Для микросервисов jwt самое оно
ну так это для микросервисов а не логина
источник

IL

Ihor Levchenko in Node.js — русскоговорящее сообщество
倫太郎 岡部
и как сохранять gdpr тогда?
или обновлять данные юзера в токене?
каждые 5 минут все равно по кукам сессии мы идем на логин сервер и просим новый access token JWTшный, и там уже будут обновленные данные (если изменились права или еще чего-то)
источник

IL

Ihor Levchenko in Node.js — русскоговорящее сообщество
я просто вижу плюс в JWT только в попытке уменьшения нагрузки на хранилище сессий.. особенно когда как у меня - 18 микросервисов и у каждого свой фронтенд (грубо говоря, очень толстый раздел CRM-ки вынесен физически в отдельный микросервис)
источник

IL

Ihor Levchenko in Node.js — русскоговорящее сообщество
я просто на JWT токены смотрю чтобы хоть как -то разгрузить  хранилище сессий
источник

A

Alex CherryTea in Node.js — русскоговорящее сообщество
Ihor Levchenko
я просто вижу плюс в JWT только в попытке уменьшения нагрузки на хранилище сессий.. особенно когда как у меня - 18 микросервисов и у каждого свой фронтенд (грубо говоря, очень толстый раздел CRM-ки вынесен физически в отдельный микросервис)
Я думаю тебе будет интересно глянуть вот это
https://miro.com/app/board/o9J_k0Cz5do=/?moveToWidget=3074457345847569069
источник

IL

Ihor Levchenko in Node.js — русскоговорящее сообщество
Alex CherryTea
Я думаю тебе будет интересно глянуть вот это
https://miro.com/app/board/o9J_k0Cz5do=/?moveToWidget=3074457345847569069
ух ты.. спасибо!
Многая “боль” здесь мне близка.

у меня в общем архитектура такая: есть login.domain.com , есть app*.domain.com (их штук 18).

Я пока реализовал наброски так: если юзер заходит на любой app, он по CORS идет на POST login.domain.com/refresh.. если приходит access_token в ответ - используем его уже как bearer в текущем микросервисе ведь мы уже знаем кто это. Если ошибка - редиректим юзера на login, ибо хз кто это (либо левый хакать пытается, либо просроченный токен, либо его отсутствие).

на логин сервере вводим кренедшлы, получаем в куку httpOnly сессию, и потом когда заходим снова на любой другой микросервис.. первым делом фронтенд КОРСом идет на логин и берет access token и юзает его. Если просрочился - опять КОРСом по сессии которая только в куках для логина берем новый токен и работаем дальше.
Я нашел это пока что самым лучшим что смог придумать.
Не хочется усложнять проект OAuth2, или разворачивать инфраструктуру для OpenID.
Вот почитаю подробнее о SAML..
источник

IL

Ihor Levchenko in Node.js — русскоговорящее сообщество
моя идея была избавиться от сессий чтобы уменьшить ддос хранилища сессий. А так оно будет ддосится либо раз в 5 минут от одной вкладки, или же при каждом открытии приложения в браузере юзером
источник

IL

Ihor Levchenko in Node.js — русскоговорящее сообщество
(ну я там еще при каждом POST /refresh шлю юзерагент, и смотрю на айпишник.. чтобы в случае аномалии (изменилась ОС или браузер, НЕ просто версия, или вообще страна ) сразу отозвать сессию)
источник

A

Alex CherryTea in Node.js — русскоговорящее сообщество
Ihor Levchenko
ух ты.. спасибо!
Многая “боль” здесь мне близка.

у меня в общем архитектура такая: есть login.domain.com , есть app*.domain.com (их штук 18).

Я пока реализовал наброски так: если юзер заходит на любой app, он по CORS идет на POST login.domain.com/refresh.. если приходит access_token в ответ - используем его уже как bearer в текущем микросервисе ведь мы уже знаем кто это. Если ошибка - редиректим юзера на login, ибо хз кто это (либо левый хакать пытается, либо просроченный токен, либо его отсутствие).

на логин сервере вводим кренедшлы, получаем в куку httpOnly сессию, и потом когда заходим снова на любой другой микросервис.. первым делом фронтенд КОРСом идет на логин и берет access token и юзает его. Если просрочился - опять КОРСом по сессии которая только в куках для логина берем новый токен и работаем дальше.
Я нашел это пока что самым лучшим что смог придумать.
Не хочется усложнять проект OAuth2, или разворачивать инфраструктуру для OpenID.
Вот почитаю подробнее о SAML..
Норм, причем ты можешь слать редирект на форму аунтетификации с указанием куда редирекнуть потом назад
источник

IL

Ihor Levchenko in Node.js — русскоговорящее сообщество
Alex CherryTea
Норм, причем ты можешь слать редирект на форму аунтетификации с указанием куда редирекнуть потом назад
да!
Я вот как раз так и думал.. типа слать callback=app100500.domain.com при редиректе на логин как query параметры
источник

A

Alex CherryTea in Node.js — русскоговорящее сообщество
Угу
источник

IL

Ihor Levchenko in Node.js — русскоговорящее сообщество
спасибо за дискуссию!
Хотел убедиться что я не совсем головой тронулся выдумывая подобные схемы ))
источник

IL

Ihor Levchenko in Node.js — русскоговорящее сообщество
чувствую надо статейку напедалить, рассмотреть эти “недоподходы” и попытаться вывалить свое решение
источник

A

Alex CherryTea in Node.js — русскоговорящее сообщество
Ihor Levchenko
чувствую надо статейку напедалить, рассмотреть эти “недоподходы” и попытаться вывалить свое решение
Добавь меня в рассылку
источник

IL

Ihor Levchenko in Node.js — русскоговорящее сообщество
принято))
источник