У меня есть микросервис, который обрабатывает аутентификацию пользователей через REST API, внешний микросервис связывается с этим микросервисом аутентификации (AMS), и все работает отлично.Основная проблема
Я хочу включить опцию входа на основе Oauth2, но не понимаю, как правильно настроить ее для архитектуры микросервисов.
Я планирую использовать шаблон стратегии для поддержки Oauth2. Ниже приведен мой текущий контекст, который поддерживает стратегию на основе JWT по умолчанию. План состоит в том, чтобы просто заставить пользователя войти в систему через поставщика Oauth2, а затем сохранить токены обновления/доступа в базе данных для будущих входов в систему, продолжая при этом выдавать свои собственные токены доступа и обновления на основе JWT для авторизации.
Код: Выделить всё
class AuthenticationContext:
def __init__(self, authentication_service):
self.authentication_service = authentication_service
def set_authentication_strategy(self, strategy):
self.authentication_service = strategy
def login(self, request):
return self.authentication_service.login(request)
def logout(self, request):
return self.authentication_service.logout(request)
def validate_token(self, request):
return self.authentication_service.validate_token(request)
def refresh(self, request):
return self.authentication_service.refresh(request)
def register(self, request):
return self.authentication_service.register(request)
+...
Основные проблемы
Нужно ли мне настроить интерфейс, который обменивается токеном авторизации с поставщиком oauth2 (давайте скажем, Google), а затем отправляет этот токен авторизации в AMS, а затем позволяет AMS использовать токен авторизации и обменивать его на токены доступа и обновления от провайдера Oauth2?Означает ли это, что мне нужно зарегистрировать оба микросервиса (интерфейс и AMS) у провайдера oauth2, чтобы один мог запрашивать код, а другой обмениваться им? ?
Целесообразно ли приносить код фронтенда (React + ChakraUI) для входа и регистрации в АМС (python)?
Есть ли есть ли альтернатива обоим или правильный способ сделать это?
Дополнительная информация
Я открыт для других предложений и рекомендаций так же, как и я не очень хорошо разбираюсь в аутентификации и авторизации в архитектуре микросервисов.Это диаграмма последовательности моей текущей стратегии по умолчанию.
Подробнее здесь: https://stackoverflow.com/questions/766 ... roservices