Важно централизовать аутентификацию даже при использовании микросервисов для одного продукта. Итак, я предполагаю, что вы будете искать службу идентификации (служба аутентификации), которая будет обрабатывать аутентификацию и выдавать токен. Другие микросервисы будут действовать как поставщики услуг, которые будут проверять выданный токен.
Примечание. В таких стандартах, как OpenID connect, выданный id_token имеет формат JWT, который также не имеет состояния и является самодостаточным с записанной информацией о пользователе. Таким образом, отдельные микросервисы не должны связываться со службой аутентификации для каждой проверки токена. Однако вы можете рассмотреть возможность внедрения или использования токенов обновления для обновления токенов, не требуя от пользователей повторного входа в систему.
В зависимости от выбранной вами технологии изменится характер выпуска и проверки токенов.
e.g:
- Платформа ExpressJS для серверной части. Вы можете проверить токены и маршруты в обработчике промежуточного программного обеспечения узла, используя Passport.
- Если вы используете API-шлюз перед конечными точками микросервисов, вы можете использовать Custom Authorizer Lambda для проверки токенов.
Однако рекомендуется использовать стандартный протокол, такой как OpenID connect, чтобы в будущем вы могли быть совместимы с Identity Federation и SSO.
Поскольку вы упомянули, что надеетесь найти собственное решение, оно также сопряжено с некоторыми проблемами, которые необходимо решить,
- Политики паролей
- Поддерживаемые стандарты (OpenID Connect)
- Безопасность (шифрование в состоянии покоя и при передаче, особенно для PID)
- SSO, MFA, поддержка Федерации и т. Д.
- IDS / IPS
Помимо нефункциональных требований вроде масштабируемости, надежности, производительности. Хотя эти требования могут не возникать вначале, я видел, как многие из них выходили из строя, когда продукты созревали, особенно в отношении соответствия.
Вот почему большинство людей рекомендуют использовать сервер идентификации или сервис, такой как Cognito, Auth0 и т. Д., Чтобы повысить рентабельность инвестиций.
person
Ashan
schedule
09.02.2018