Pull to refresh
16
0
Sergey Kuleshov @svyatogor

Mobile & Web Developer

Send message

Аутентифицируем запросы в микросервисном приложении с помощью nginx и JWT

Reading time4 min
Views41K
Стараясь оставаться в тренде и следуя веяниям моды веб разработки, последнее веб приложение я решил реализовать как набор микросервисов на ruby плюс “толстый” клиент на ember. Одна из первых проблем, вставших перед мной была связана с аутентификацией запросов. Если в классическом, монолитном, приложении все просто, используем куки, сессии, подключаем какой-нибудь devise, то тут все как в первый раз.

Архитектура


За базу я выбрал JWT — Json Web Token. Это открытый стандарт RFC 7519 для представления заявок (claims) между двумя участниками. Он представляет из себя структуру вида: Header.Payload.Signature, где заголовок и payload это запакованые в base64 json хэши. Здесь стоит обратить внимание на payload. Он может содержать в себе все что угодно, в принципе это может быть и просто client_id и какая-то другая информация о пользователе, но это не очень хорошая идея, лучше передавать там только ключ идентификатор, а сами данные хранить где-то в другом месте. В качестве хранилища данных можно использовать что угодно, но мне показалось, что redis будет оптимальным, тем более что он пригодится и для других задач. Еще один важный момент — каким ключем мы будем подписывать наш токен. Самый простой вариант использовать один shared key, но это явно не самый безопасный вариант. Коль скоро мы храним данные сессии в redis, ничто не мешает нам генерировать уникальный ключ для каждого токена и хранить его там же.

Понятно, что генерировать токены будет сервис отвечающий за авторизацию, но кто и как будет их проверять? В принципе можно проверку затолкать в каждый микросервис, но это противоречит идеи их максимального разделения. Каждый сервис должен будет содержать логику обработки и проверки токенов да еще и иметь доступ к redis. Нет, наш цель получить архитектуру в которой все запросы приходящие в конечные сервисы уже авторизованы и несут в себе данные о пользователе (например в каком-нибудь специальном заголовке).
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments16

Добавляем любое видео в коллекцию iTunes

Reading time3 min
Views65K

Предыстория


iTunes, как вам известно, прекрасно работает не только с музыкой, но и с фильмами. При чем возможности его в этом вопросе широчайшие, тут и разделение на фильмы и ТВ сериалы, поддержка обложек, жанров и метаданных. Но вот незадача, все это поддерживается только для родных mov файлов. Установка кодеков, например Perian, ситуацию нисколечко не спасает. Хотя QuickTime прекрасно проигрывает все видео файлы, iTunes добавлять их в библиотеку отказывается. Ну не умеет он оттуда метаданные забирать!

Пути решения


Путей решения этой проблемы есть целых три.

Читать дальше →
Total votes 69: ↑52 and ↓17+35
Comments34

The Hit List — еще один TODO менеджер

Reading time4 min
Views1.4K
Программ для для управления задачами под Mac сейчас великое множество, тут вам и простые TODO списки и целый спектр софта в стиле GTD (Getting Things Done), начиная от широко известного Omni Focus и заканчивая новым, но уже популярным Things.

Но вот недавно на горизонте замаячил еще один конкурент – The Hit List (далее THL). Программа пока находится в стадии бета тестирования и в ней нет некоторых важных функций (например синхронизации с iPhone), но автор обещает, что к моменту релиза все будет в лучшем виде.

Так и хочется начать сравнивать THL с другими аналогичными решениями, однако по заверениям автора он начал разрабатывать ее не оглядываясь на то, что сделано конкурентами и намного раньше чем появился внешне похожий Things. Кроме того при ближайшем рассмотрении мы понимаем что программа уникальна, т.к. не накладывает никаких ограничений на пользователя, дает ему возможность формировать и выполнять задачи именно так как он привык, не следуя какой–то одной парадигме. Она органично сочетает в себе систему тэгов, проектов, списков задач и иерархию подзадач.

Читать дальше →
Total votes 11: ↑9 and ↓2+7
Comments5

Information

Rating
Does not participate
Location
Лимассол, Government controlled area, Кипр
Date of birth
Registered
Activity