После полудня,
Просто ищем, чтобы кто-то дважды проверял мою работу. Является ли ниже эффективный способ защиты микросервисов?
Предпосылка
Разрушение нашего монолитного приложения и монолитного Партнерского API в микросервисы, ориентированные на конкретные бизнес-функции. Скорее всего, они будут небольшими приложениями expressjs, работающими в контейнере докеров, на эластичном бобовом стебле, который знает. Они где-то будут жить:)
Я смотрю на то, чтобы встать Kong в качестве моего шлюза API или использовать AWS API Gateway для инкапсуляции деталей моих микросервисов. Кроме того, он просто чувствует себя хорошо.
Плагин JWT для Kong проверит подпись JWT, а затем передаст customer_id
в заголовке микросервиса. Я также должен упомянуть, что у нас есть сторонние разработчики, которые также будут участвовать в интеграции. Вот основной пример того, что я вижу:
Реализация
- Создайте "потребителей" для каждой платформы и стороннего разработчика. (Веб-приложение, мобильное приложение и текущие партнеры по интеграции, которые у нас есть. Примечание: я не хочу создавать пользователей для каждого пользователя, который входит в систему. Хотя это, безусловно, более безопасно, это добавляет много работы. Кроме того, если вы выясните как получить секрет из моего шлюза API. У меня явно есть другие проблемы).
- Пусть Kong проверит запрос для меня. Вид как вышибала у двери, нет авторизации, просто проверка подлинности.
- Мне не нужно знать, что токен действителен, когда он попадает в микросервис, я могу просто использовать некоторое промежуточное программное обеспечение для его декодирования и использовать пользовательскую логику, чтобы решить, действительно ли этот пользователь должен делать то, что они пытаются делать.
Дополнительные материалы
-
Там есть хороший плагин контроля доступа для Kong. Наше приложение и мобильное приложение будут работать с привилегиями "Бог", но я определенно мог бы заблокировать разработчиков по определенным маршрутам и методам.
-
Отмена доступа третьей стороны будет простой, отмена доступа конечных пользователей будет не такой простой, если я не хочу сразу аннулировать все JWT, создавая новый секрет. Возможно, я смогу ограничить время токена до 10 минут или около того и сделать наши приложения проверенными, если они истекли, получить новый токен, а затем перейти к исходному запросу. Таким образом, я могу "пометить" их в базе данных или что-то еще, и не позволить генерировать JWT.
-
SSL используется повсеместно, JWT хранится в cookie только для SSL в веб-браузере, и нет никакой конфиденциальной информации, хранящейся в любой формуле.
Спасибо, ребята.