Стратегии проверки подлинности микрослужб
Я не можете выбрать достойного/стратегии защищенной аутентификации для архитектуры микрослужб. Только такой пост я нашел на эту тему это: единый вход в архитектуре микрослужб
моя идея здесь состоит в том, чтобы иметь в каждой службе (например. проверка подлинности сообщений, уведомлений, профилей и т. д.) уникальная ссылка на каждого пользователя (вполне логично тогда его user_id) и возможность получить текущий пользователь id при входе в систему.
из моего исследования, я вижу, есть две возможные стратегии:
1. Общая архитектура

в этой стратегии приложение аутентификации является одним из сервисов среди других. Но каждая служба должна быть в состоянии сделать преобразование session_id=>user_id Так что это должно быть очень просто. Вот почему я подумал о Redis, что бы хранить ключ: value session_id:user_id.
2. Архитектура брандмауэра

в этой стратегии, сессии хранение на самом деле не имеет значения, так как оно обрабатывается только аутентифицирующим приложением. Тогда user_id может быть перенаправлен в другие службы. Я думал о Rails + Devise (+Redis или mem-cached, или хранилище cookie и т. д.) но есть масса возможностей. Единственное, что имеет значение, это то, что Службе X никогда не нужно будет аутентифицировать пользователя.
как эти два решения сравниваются в терминах оф:
- безопасность
- надежность
- масштабируемость
- простота использования
или, может быть, вы предложите другое решение, о котором я здесь не упоминал?
мне больше нравится решение № 1, но я не нашел много реализации по умолчанию, которая обеспечила бы меня в том, что я иду в правильном направлении.
Я надеюсь, что мой вопрос не будет закрыт. Я не знаю, где еще спросить оно.
спасибо заранее
4 ответов:
исходя из того, что я понимаю, хороший способ решить это с помощью протокола OAuth 2 (вы можете найти немного больше информации об этом на http://oauth.net/2/)
когда ваш пользователь войдет в ваше приложение, они получат токен, и с помощью этого токена они смогут отправлять другим службам, чтобы идентифицировать их в запросе.
пример прикован микрослужб Дизайн
ресурсы:
короткий ответ: используйте аутентификацию на основе маркеров OAuth2.0, которая может использоваться в любых приложениях, таких как веб-приложение или мобильное приложение. Последовательность шагов, связанных с веб-приложением, будет тогда
- проверка подлинности ID провайдера
- держите маркер доступа в cookie
- доступ к страницам в webapp
- позвоните в службу
на диаграмме ниже показаны компоненты, которые будут необходимы. Такое архитектура, разделяющая веб-интерфейсы и API данных, обеспечит хорошую масштабируемость, устойчивость и стабильность
можно использовать idenitty server 4 для целей аутентификации и авторизации
вы должны использовать Архитектура Брандмауэра следовательно, у вас есть больше контроля над безопасность ,надежность, масштабируемость и простота использования
шаблон шлюза API должен использоваться для реализации этого с помощью OpenID Connect. Пользователь будет аутентифицирован IDP и получит токен JWT с сервера авторизации. Теперь система API gateway может хранить этот токен в базе данных Redis и устанавливать cookie в браузере. API gateway будет использовать cookie для проверки запроса пользователя и отправит маркер в микросервисы.
API Gateway действует как единая точка входа для всех типов клиентских приложений, таких как public java script client приложение, традиционные веб-приложения, нативные мобильные приложения и сторонних клиентских приложений в архитектуре микрослужб.
вы можете найти более подробную информацию об этом на http://proficientblog.com/microservices-security/



Comments