@proelixir

Страница 552 из 1045
Dmitry
27.04.2017
17:04:11
При чем тут модель. Я это все кладу в контроллер

Alexey
27.04.2017
17:04:34
не должно это там быть, это не его задача

Dmitry
27.04.2017
17:05:45
Может я туплю, но совершенно не понимаю где это ещё можно сделать

Vadim
27.04.2017
17:06:03
В идеале контроллер пинает разные сервисы, иначе он становится божественным контроллером с нулевым переиспользованием

Google
Dmitry
27.04.2017
17:07:27
Ну так я про то и пишу. Перечитай мое сообщение - 2 раза стукнуть модель, сервис смс, сервис емэил, задать таск. На все по строчке, плюс обработка ошибок

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

Alexey
27.04.2017
17:09:06
тогда как это связанно с тонкой моделью?

+ ты написал "сторонний сервис", это выглядело как сделать запрос

возможно просто не правильно поняли

Dmitry
27.04.2017
17:12:00
Ну да, я перечитал как то у меня мысль быстрее диалога пошла

Vadim
27.04.2017
17:35:01
Я тоже подумал, что ты долбишься из контроллера куда-то далеко)

Dmitry
27.04.2017
17:36:21
Я имел в виду что долбится из контроллера конечно мало кто будет - это полная камасутра, а вот протупить с моделью любят все

Ребят, бэкенд для мобильного приложения как авторизироваться принято сейчас? JWT в хедере, или oauth2 токены?

Я чёт сижу и не могу понять зачем вообще jwt нужен

anton
27.04.2017
20:09:01
зависит от если тебе ничего про клиента в мобилке из токена не надо - то просто access_token

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

Dmitry
27.04.2017
20:10:19
но я так понимаю не сделаешь же соль одну на всех?

Google
Dmitry
27.04.2017
20:10:32
А это значит что нужно будет лазить в кэш за солью

А какая разница за чем лазить? Можно же сессию в редис запихнуть

anton
27.04.2017
20:10:50
ты про ту, которой jwt подписывается?

anton
27.04.2017
20:12:29
а зачем соль? смысл его в открытости.. ты же не прячешь там данные и не шифруешь их. ты просто их туда помещаешь, подписываешь каким-нибудь х509 проверяющая сторона проверяет что данные не подменены и процессит

Dmitry
27.04.2017
20:13:06
Если кто-то ухнает x509 он может что угодно подписать

и я буду думать что всё норм

anton
27.04.2017
20:13:29
ну, дружище, терять приватные ключи - это всегда пиздец :)

Dmitry
27.04.2017
20:14:04
Я имею ввиду что если все тоекны одним и тем же шифровать - его ломануть можно перебором

Так то данные есть, осталось только подобрать

anton
27.04.2017
20:14:40
кого ломануть? ты не шифруешь, ты подписываешь

Dmitry
27.04.2017
20:15:42
Я конечно не шарю в крипте, но смысл какой - есть данные - они вообще видни, и есть хеш, который получаеься хешированием этих открытых данных с приватным ключом

И всё это лежит в jwt

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

А потом им подписать всё что угодно

Ну если я правильно понимаю

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

anton
27.04.2017
20:25:21
ты про сценарий, когда ты подобрал приватный ключ, нагенерил jwt, прописал себе iddqd и засылаешь его мне? но я могу соль делать динамическую, мне она только в бекенде нужна. могу обновлять её единожды для всех хоть раз в сутки для веба некоторые используют такую связку: 1. классическая сессия для пользователя 2. словарь сессия-токен 3. токен уходит в микросервисы

Dmitry
27.04.2017
20:26:36
Я не очень уверен что правильно понял, но динамическая соль подразумевает то что ты её откуда-то берёшь - из кеша там, бд, редиса

Так почему бы не брать оттуда то, что в пэйлоаде жвт, если ты всё равно вынужден куда-то обращаться

Google
Dmitry
27.04.2017
20:27:12
Вместо жвт соответственно

anton
27.04.2017
20:30:13
а зачем мне куда то обращаться? если это HMACSHA256 то мне для проверки подписи нужен секрет он у меня может динамически генериться раз в сутки по какому-то алгоритму. алгоритм на всем бекенде известен, куда-то ходить лишний раз не надо. ну сессия - это какое то состояние ;) а здесь отсутствие состояние. можно указать начало жизни токена, время окончания и массу полезных фишек.

Dmitry
27.04.2017
20:31:22
Те типо ты для проверки используешь к примеру соль производную от времени

Ну тогда все логично

anton
27.04.2017
20:33:39
ну то есть я говорю что у меня токен живет сутки раз в сутки меняется секрет

Dmitry
27.04.2017
20:34:04
Прост ща рефакторинг проект - там в хедере токен и отдельно юзер ид. И мне все не нравится

Я думал сделать оаус с рефреешем и просто токеном

Но походу жвт ниче так зайдёт

Ну и логика - по токену фетчится сессия с редиса и сравнивается ид там и в хедере

anton
27.04.2017
20:35:41
Я думал сделать оаус с рефреешем и просто токеном
нормальное решение. по крайней мере его всегда можно докрутить до jwt токена

Dmitry
27.04.2017
20:36:00
Короче вроде прикольно, но как то не стандартно

А в безопастности велосипеды как то я не люблю

Dmitry
27.04.2017
20:36:25
Потому что нифига крипту не знаю

anton
27.04.2017
20:36:50
вот тут очень обзорный доклад про jwt https://www.youtube.com/watch?v=67mezK3NzpU cмотреть лучше сразу на 1.5х скорости ;) юмор тоже приятный

Dmitry
27.04.2017
20:38:16
Ща осталось понять только как рефрешить jwt

anton
27.04.2017
20:38:47
Ща осталось понять только как рефрешить jwt
так же, как в случае с обычным access_token + refresh_token

Dmitry
27.04.2017
20:39:13
Так то вроде нету refresh jwt

А ну блин, логично же

Нужно просто отдельный endpoint который даст новый jwt

И новый рефреш

Google
anton
27.04.2017
20:43:02
так jwt это просто формат записи. ты передаешь его как access_token (если мы про oauth2 говорим)

Dmitry
27.04.2017
20:43:18
Дада, понял уже

Обычный короче oauth2 просто я в токене прямо инфу храню

anton
27.04.2017
20:44:21
йеп

Dmitry
27.04.2017
20:44:32
Есть че для феникса готовое?

Походу придётся на коленке собирать на плаге как всегда

anton
27.04.2017
20:45:41
Есть че для феникса готовое?
твои любимые плаги? ;) plug jwt

у guardian может есть чего..

Dmitry
27.04.2017
20:47:27
Я как понял - в новых сутках меняется соль, сервер говорит - ваш jwt говно, ты рефрешем подбираешь новый - ура

Admin
ERROR: S client not available

anton
27.04.2017
20:47:28
я сам всю неделю мучаюсь, писать лень, но нужно поменять всю авторизацию/аутентификацию/регистрацию :( команда умеет c# но меня он достал.. подумываю о диверсии

Dmitry
27.04.2017
20:48:16
Если устарел по дате, а соль норм - все равно говоришь - ваш токен говно

Короче 7 бед- один ответ "ваш токен говно"

А рефреш норм в бд хранить, или всетки редис? Хотя какой блин редис, токен может дольше жить чем сервак...

Короче используя jwt я вообще редис выкину

anton
27.04.2017
20:51:25
А рефреш норм в бд хранить, или всетки редис? Хотя какой блин редис, токен может дольше жить чем сервак...
ну у тебя же stateless, сессии нет. ну будет у клиента токен, а твой сервер сделает let it crash ну потом придет клиент с токеном, попробует отрефрешить, ему скажет - токен у тебя говно! он выкинет на страничку аутентификации. не страшно же? если страшно - то персисти где-то его, от таких казусов

Dmitry
27.04.2017
20:52:06
Мне кажется бд оптимально для такого

Так то в стандартном сценарии он там раз в час будет только пинаться

А внутри феникса рефреш нигде не похранишь

Ну можно типо отдельный генсервер - но как то криво чтоли

Google
anton
27.04.2017
20:56:05


Rumata
27.04.2017
20:57:05
А че ты гард не юзаешь

Там же все из коробки с этим jwt

Dmitry
27.04.2017
20:57:24
Хз

Rumata
27.04.2017
20:57:28
Или ты прогениацию

?

Dmitry
27.04.2017
20:57:42
Так то мне рефакторинг надо делать

Rumata
27.04.2017
20:57:48
Я делал Спайк проектик

Dmitry
27.04.2017
20:57:50
Я ещё не смотрел как че

Rumata
27.04.2017
20:58:00
Там и заюзал все вроде работало

Rail'
28.04.2017
03:07:10
Тут такое дело, я в поисках работы В основном пишу на python'е+django, когда то давно для себя баловался erlang'ом Вдруг кому то нужен питонист, но и с радостью могу переквалифицироваться в елексирщика Вот мое резюме https://docs.google.com/document/d/1ytb9mIVnU-08mLyGw5ZgeqqyERtXVY7NZcH_27te_NA

На всякий случай, пример кода на erlang, это телеграм бот, писал достаточно давно https://github.com/radist101/raboter/blob/master/src/raboter.erl

Alexander
28.04.2017
03:10:27
не очень по теме, но не возбраняется

Rail'
28.04.2017
03:12:52
Хорошо тогда

Mikhail
28.04.2017
06:20:33
в режиме long-polling спать не нужно, телега не отпустит твой запрос, пока таймаут не выйдет или данные тебе не отправит

Rail'
28.04.2017
06:32:46
а зачем там timer:sleep(3000) на 32 строчке?
эх, вспомнить бы зачем я такое написал

Maxim
28.04.2017
06:33:31
вообще лучше деловым языком писать резюме

Rail'
28.04.2017
06:34:01
Maxim
28.04.2017
06:38:09
спасибо, поправил
еще это, лучше сделать какой-то proof of skills отдельно

типа найди какую-то задачу для реализации на эрланге/эликсире

Страница 552 из 1045