Autorização do usuário com microsserviços

12

Os microsserviços devem ser responsáveis ​​por manipular sua própria autorização ou você acha melhor ter um serviço de autorização separado que seja compartilhado por todos ou por um subconjunto (dentro do mesmo domínio comercial) dos microsserviços?

Para mim, o último faz mais sentido, pois facilita a aplicação de alterações, a aplicação de políticas; é SECO, etc. No entanto, pode facilmente ficar fora de controle por todos os tipos de serviços que despejam suas regras em um único local e também se preocupam com a sobrecarga da rede.

Alguma ideia?

morcmarc
fonte

Respostas:

7

Eu usaria um sistema centralizado de autenticação unificada e teria permissões / estatísticas separadas para cada microsserviço (mais ou menos como ainda não posso votar novamente neste site de troca de pilhas, mas posso estourar a pilha enquanto estiver usando o sistema de autenticação de troca de pilha central). Um dos meus projetos atuais envolverá essa abordagem em um futuro próximo, o que será bom; o trabalho de desenvolvimento anterior envolveu a criação de um sistema compatível com HIPPA, exigindo um segundo nível de autorização / autenticação, e é um aborrecimento demorado para liberar autorizações em cadeia de componentes de componentes legalmente separados, mas funcionalmente inseparáveis ​​do sistema. O processo de depuração envolve muito menos alegria do que um simples login oauth ou uma API com cabeçalhos appid e x-auth.

Qual usar depende dos requisitos específicos de um roteiro de desenvolvimento, mas eu escolheria a abordagem mais simples, sempre que possível, para evitar sobrecarga excessiva e tempo / esforço de desenvolvimento.

Jonathan Voss
fonte
Usamos o OAuth2 para autenticação e gostaria de seguir o mesmo princípio - ou seja, ter um serviço central com uma responsabilidade única e bem definida - para autorização, em vez de duplicar a funcionalidade e a lógica de dispersão entre os serviços. Para mim, é uma violação do limite do domínio. Eu concordo que isso significa que teremos que resolver o isolamento das regras de serviço (ala stackoverflow, programadores etc).
morcmarc
2
Você pode ter permissões globais que são substituídas por permissões específicas de serviço, úteis se vários microsserviços principais usarem as mesmas permissões. As permissões específicas do microsserviço provavelmente devem ser armazenadas na infraestrutura do aplicativo para esse microsserviço para evitar possíveis problemas de desempenho para o serviço de autenticação central.
Jonathan Voss
4

Cada microsserviço não deve ter que fazer sua própria autenticação, mas precisa fazer sua própria autorização.

Fonte

E isso faz todo o sentido. Estou assumindo que não há dúvida sobre autenticação central. Mas a autorização é bastante confusa.

Considerando que o número de microsserviços pode crescer até centenas, milhares, um serviço de autorização central deve ser responsável por listar apenas as permissões, mas não validá-las. O microsserviço individual pode ter que se aproximar de maneira diferente para validar a permissão.

Esse serviço central de autorização pode precisar obter modelos de serviços diferentes e abordar de maneira diferente para tomar uma decisão; pode parecer fácil e bonito no começo. Mas poderia ser um caos mais tarde.

Ashwani Agarwal
fonte