
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 подписывается?

Dmitry
27.04.2017
20:11:03

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

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

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
у 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

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 спать не нужно, телега не отпустит твой запрос, пока таймаут не выйдет или данные тебе не отправит

Maxim
28.04.2017
06:31:00

Rail'
28.04.2017
06:32:46

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

Rail'
28.04.2017
06:34:01

Maxim
28.04.2017
06:38:09
типа найди какую-то задачу для реализации на эрланге/эликсире