🔥

Тред (Юрий Дымов)


Давайте обсудим авторизацию. Это то, что создало мне много боли на одном из проектов. Мы дробили RoR монолит на rails-api и React front

Так как в backend уже был devise было принято решение найти, что-нибудь для него, чтобы можно было использовать токены

Нашли devsite_token_auth github.com/lynndylanhurle… и redux-auth github.com/lynndylanhurle… С виду отличная связка, много плюсиков на github

Внедрили. Словили несколько багов с redux-auth, но с помощью issue-tracker получилось все побороть. Вроде заработало, но не все было ок

Сессия время от времени ломались, также либа не поддерживала universal rendering, что нам было критично. Решили сделать PR, но redux-auth

нам внутри не оч понравилось: много лишнего для нас, dead-code, пара шорткатов, в итоге написали свое: github.com/yury-dymov/red…

Убрали шорткаты, полностью ui-слой, регистрацию по e-mail, так как у нас только SSO. 150кб -> 30кб, плюс работает как надо

Потом еще выкинули и devise_token_auth, так как сессии ломались из-за него. То есть, в итоге с обоих сторон внедрили свое решение

Так как это не jwt, пришлось проводить дополнительный аудит безопасности (успешно). Сейчас уже полгода в проде - полет нормальный

Мораль: звезды на github еще ничего не доказывают, к сожалению. У меня осталось ощущение, что мы потратили неадекватно много времени

В идеале нужна норм реализация jwt и ни devise_token_auth, ни redux-auth, ни redux-oauth вам не нужны. Надеюсь кому-то поможет :)

Поделитесь, что вы используете для подобных сценариев, когда у вас node.js front и не JS back-end. То есть passport и пр. не подходят