Estou tendo dificuldades para escolher uma estratégia de autenticação decente / segura para uma arquitetura de microsserviço. A única publicação SO que encontrei no tópico é a seguinte: Logon único na arquitetura de microsserviço
Minha idéia aqui é ter em cada serviço (por exemplo, autenticação, mensagens, notificação, perfil etc.) uma referência única para cada usuário (logicamente, então o dele user_id
) e a possibilidade de obter o usuário atual id
se logado.
Das minhas pesquisas, vejo duas estratégias possíveis:
1. Arquitetura compartilhada
Nesta estratégia, o aplicativo de autenticação é um serviço entre outros. Mas cada serviço deve poder fazer a conversão session_id
=>, user_id
portanto, deve ser simples. Por isso, pensei em Redis, que armazenaria a chave: valor session_id:user_id
.
2. arquitetura de firewall
Nesta estratégia, o armazenamento da sessão realmente não importa, pois é tratado apenas pelo aplicativo de autenticação. Em seguida, o user_id
pode ser encaminhado para outros serviços. Pensei no Rails + Devise (+ Redis ou cache de memórias, ou armazenamento de cookies etc.), mas há inúmeras possibilidades. A única coisa importante é que o Serviço X nunca precisará autenticar o usuário.
Como essas duas soluções se comparam em termos de:
- segurança
- robustez
- escalabilidade
- fácil de usar
Ou talvez você sugira outra solução que não mencionei aqui?
Gosto mais da solução nº 1, mas não encontrei muita implementação padrão que me protegesse no fato de estar indo na direção certa.
Espero que minha pergunta não seja fechada. Eu realmente não sei onde mais perguntar.
desde já, obrigado