Прозрачная защита микросервисов. Как защитить API и создать функциональность для REST API::Журнал СА 11.2016
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

Разбор полетов  

Ошибок опыт трудный

Как часто мы легко повторяем, что не надо бояться совершать ошибки, мол,

 Читать далее...

Принципы проектирования  

Dependency Inversion Principle. Принцип инверсии зависимостей в разработке

Мы подошли к последнему принципу проектирования приложений из серии SOLID – Dependency

 Читать далее...

Рынок труда  

Вакансия: Администратор 1С

Администратор 1С – это специалист, который необходим любой организации, где установлены программы

 Читать далее...

Книжная полка  

Книги для профессионалов, студентов и пользователей

Книги издательства «БХВ» вышли книги для тех, кто хочет овладеть самыми востребованными

 Читать далее...

Принципы проектирования  

Interface Segregation Principle. Принцип разделения интерфейсов в проектировании приложений

Эта статья из серии «SOLID» посвящена четвертому принципу проектирования приложений – Interface

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 10795
Комментарии: 0
Потоковая обработка данных

 Читать далее...

19.03.2018г.
Просмотров: 9042
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

 Читать далее...

19.03.2018г.
Просмотров: 9090
Комментарии: 0
Конкурентное программирование на SCALA

 Читать далее...

19.03.2018г.
Просмотров: 5735
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6429
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 3736
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 2731
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3531
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3521
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6016
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

Друзья сайта  

 Прозрачная защита микросервисов. Как защитить API и создать функциональность для REST API

Архив номеров / 2016 / Выпуск №11 (168) / Прозрачная защита микросервисов. Как защитить API и создать функциональность для REST API

Рубрика: Разработка /  Микросервисы   | Дополнительные материалы

Александр Календарев АЛЕКСАНДР КАЛЕНДАРЕВ, OTG, руководитель группы (ТимЛид), akalend@mail.ru

Прозрачная защита микросервисов
Как защитить API и создать функциональность для REST API

Сегодня сложное монолитное приложение делят на несколько микросервисов и публичное API для клиентов. Публичное API и общение между открытыми микросервисами требуют авторизационной защиты

Проверка подлинности в теории

В веб-приложениях, использующих REST API, в качестве защиты применяют рекомендации WWW. Защита происходит посредством токена, который передается в HTTP-заголовке Authorization и представляет собой «соленый» хеш передаваемого сообщения (md5, sha, sha512).

Понятие «соленый» (salt) хеш появилось при создании систем хранения паролей, когда для доступа пользователя сравнивают не сам пароль, а его хеш. А чтобы в разы труднее было подобрать пароль, по уже готовым хешам, хеш «подсаливают», т.е. добавляют некую секретную константу («соль») и уже хешируют полученный результат. Не зная секретной константы, в случае утечки данных такие хеши намного труднее подбирать. Теперь, когда пользователь вводит пароль, на принимающей стороне система к нему подмешивает «соль», т.е. добавляют заданный секретный текст, хешируют и сравнивают уже «подсоленные» хеши.

Аналогичный алгоритм используется и при авторизации микросервисов. Пользователю сервиса дается секретный ключ, который подмешивают в текст и уже от полученного результата берут хеш. В HTTP-заголовке Authorization передается текст: Token xxx, где иксы заменяются значением хеша.

На принимающей стороне средствами HTTP-сервера проверяют подлинность отправляемого сообщения и воз-вращают либо результат работы микросервиса, либо 403 HTTP-код ошибки (Forbidden). И нет никакой необходимости данную функцию возлагать на сам микросервис.

Nginx в качестве авторизационного сервиса

Среди стандартных модулей nginx нет реализующего такую функцию. Есть очень похожий модуль ngx_http_auth_jwt_module, реализующий спецификацию JWT [1] RFC 7519, но с помощью него решаются более сложные задачи. Также естьмодуль nginx accesskey, который хеширует часть строки запроса, IP и другие выбранные параметры. Но, к сожалению, он разработан под nginx старых версий и не собирается с последними исходниками. Конечно, API nginx открыто, иможно реализовать свой модуль. Но зачем бить из пушки по воробьям, коль проще это разработать, используя модуль lua.

Lua [2] (в переводе с португальского – «луна») – Open Source-скриптовый язык программирования, разработанный в подразделении Tecgraf (Computer Graphics Technology Group) католического университета Рио-де-Жанейро. По своим возможностям и идеологии язык очень похож на JavaScript и в основном используется во встраиваемых решениях, по большей части в игровой индустрии: World Craft, Angry Birds; при разработке IDE Adobe Photoshop Lightroom, Moai; всистемных программах apt-rpm, Redis, Tarantool. Lua – более прост и за счет этого быстр, занимает меньше места в оперативной памяти, имеет быстрый JIT-компилятор, поэтому он и нашел свою нишу в разного рода встраиваемых решениях. В настоящее время популярность Lua невелика – всего 25-е место среди языков программирования.

Модуль lua_nginx_module [3] был разработан группой Openresty [4] под руководством Yichun Zhang (agentzh) в рамках создания одноименной платформы на основе собственной сборки nginx для проекта Taobao.com. Этовысокопроизводительная HTTP-платформа, выдерживающая до 100 тысяч соединений на один узел, на базе которой возможно вести разработку разных веб-приложений и микросервисов. Освоение этой платформы выходит за рамки данной статьи.

Статью целиком читайте в журнале «Системный администратор», №11 за 2016 г. на страницах 50-55.

PDF-версию данного номера можно приобрести в нашем магазине.


  1. Cпецификация JWT – https://jwt.io.
  2. Oфициальный сайт языка Lua – http://Lua.org.
  3. Cсылка на репозиторий lua-модуля nginx – https://github.com/openresty/lua-nginx-module.
  4. Сайт проекта Openresty – http://openresty.org.
  5. Исходные коды проекта – https://github.com/akalend/authorize-rest.lua.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru