2015-05-05 3 views
2

Я изучаю архитектуру микросервисов, и у меня есть вопрос.Архитектура микросервиса, аутентификация и другие услуги

Признав, что у меня есть несколько служб на другом хосте, как следующее:

Мой вопрос, когда пользователь запрашивает на шлюзе, он отправляет токен доступа (stateless, oauth2.0, что угодно), тогда g ateway спрашивает службу аутентификации, и если пользователь существует и имеет разрешения, он получает доступ к ресурсам в другой службе.

Это нормально, но что, если я попытаюсь позвонить непосредственно BillingService со своего хоста? Вы можете сказать мне, что порт закрыт, и я согласен с этим.

Но означает ли это, что порт разрешен только с определенного хоста другому? Что означает, что услуга биллинга на порту 1234 разрешена только с шлюзовой машины?

Я что-то упустил?

Спасибо за заранее

ответ

3

Служба биллинга необходимо, чтобы защитить себя. В этой ситуации вы не можете полагаться только на сетевую безопасность. Способ, которым служба Billing защищает себя, - это проверить, активен ли токен/сеанс. Это не должно делаться бизнес-логикой, но должно выполняться с помощью используемой системы безопасности.

Например, в предыдущих проектах мы использовали CAS для защиты наших услуг. Here - это инструкции по добавлению фильтров CAS в контейнер Servlet. Поэтому для защиты моих сервисов я просто включаю эти фильтры в свой web.xml и соответствующие файлы jar. Эти фильтры CAS будут перехватывать каждый запрос и проверять, что токен/сеанс активен и что пользователь вошел в систему. Возможно, вы не используете CAS, но этот подход должен быть аналогичным. Надеемся, вам не придется писать собственный код для проверки HTTP-запроса и убедиться, что он имеет соответствующий активный токен/сеанс в вашей службе биллинга.

+0

Хорошо, но проблема в том, что я должен применять защиту для всех моих сервисов (с CAS или другой). Поэтому я должен повторить фрагменты кода. Разве это не плохая практика? – mfrachet

+0

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

+0

Я должен документировать больше о архитектуре микросервисов, я думаю. Спасибо за вашу помощь – mfrachet

Смежные вопросы