Estratégia de autenticação de Microservice
user_id
) e a possibilidade de obter o usuário atual id
se logado.
Das minhas pesquisas, Vejo que há duas estratégias possíveis:
1. Arquitectura partilhada
nesta estratégia, o aplicativo de autenticação é um serviço entre outros. Mas cada serviço deve ser capaz de fazer a conversão session_id
=> user_id
deve ser muito simples. Foi por isso que pensei no Redis, que guardaria a chave:valor session_id:user_id
.
2. Arquitectura de Firewall
Nesta estratégia, o armazenamento de sessões não importa, pois só é tratado pelo a autenticar app. Então o {[[0]} pode ser encaminhado para outros serviços. Eu pensei em trilhos + Devise (+Redis ou mem-cache, ou armazenamento de biscoitos, etc.) mas há toneladas de possibilidades. A única coisa que importa é que o Service X nunca precisará autenticar o usuário.como se comparam estas duas soluções em termos de:
- segurança
- robustez
- escalabilidade
- facilidade de Utilização
gosto mais da solução #1, mas não encontrei muita implementação padrão que me assegurasse de que estou a ir na direcção certa.
Espero que a minha pergunta não seja encerrada. Não sei mais onde perguntar.obrigado antecipadamente
4 answers
, Baseado no que eu entendo, uma boa maneira de resolver isso é usando o protocolo OAuth 2 (você pode encontrar um pouco mais de informações sobre ele em http://oauth.net/2/)
Quando o seu utilizador entrar na sua aplicação, receberá um token e, com este token, poderá enviar para outros serviços para os identificar no pedido.
Exemplo de Microservice acorrentada Design
Recursos:
Resposta Curta: Use o OAuth2. 0 kind token based authentication, que pode ser usado em qualquer tipo de aplicações como um webapp ou uma aplicação móvel. A sequência de passos envolvidos para uma aplicação web seria então para
- autenticar contra o fornecedor de ID
- mantém a ficha de acesso em cookie
- acesse as páginas do webapp
- Ligue para os serviços
O diagrama abaixo mostra os componentes que seriam necessários. Tal arquitetura separando a web e a apis de dados dará uma boa escalabilidade, resiliência e estabilidade
Pode utilizar um servidor de identificações 4 para fins de autenticação e autorização
Tem de usar Arquitectura de Firewall por isso tem mais controlo sobre segurança , robustez ,escalabilidade e facilidade de Utilização
O padrão de gateway da API deve ser usado para implementar isto usando o OpenID Connect. O Usuário será autenticado pelo IDP e receberá o token JWT do servidor de autorização. Agora o sistema de gateway da API pode armazenar este token na base de dados Redis e definir o cookie no navegador. A API gateway usará o cookie para validar o pedido do Usuário e enviará o token para os Microservices.
A 'Gateway' da API funciona como um ponto de entrada único para todos os tipos de clientes, aplicações como a aplicação cliente de 'script' java pública, aplicativo Web tradicional, aplicativo móvel nativo e aplicativos clientes de terceiros na arquitetura Microservice.
Você pode encontrar mais detalhes sobre isso em http://proficientblog.com/microservices-security/