Servidor de autenticação separado da aplicação
13/09/2014
0
Tenho um cliente que vai desenvolver duas aplicações de sua empresa, ou seja, dois serviços oferecidos por sua empresa, e planos para outros projetos, e versões mobile dos mesmos.
Pois bem, por questões de modularização do projeto e facilidade de desenvolvimento de futuras aplicações, abstraimos todo o processo de autenticação das aplicações para um serviço único de autenticação/login.
A minha intenção é que toda a interação do usuário com sua conta, login, logout, atualização de dados, se dê em um único local, em um servidor e banco de dados à parte, deixando o servidor de cada aplicação livre e ocupado apena com o que realmente lhe interessa rs.
Pois bem, como esse é o meu primeiro empreendimento na linha DevOps, e achei pouco material sobre essa questão específica, gostaria de umas dicas, opiniões e experiências.
Thiago Moreira
Posts
13/09/2014
Marisiana Battistella
13/09/2014
Roniere Almeida
Tambem, pois futuramente estarei estudando essa parte de servidores.
14/09/2014
Thiago Moreira
1. Local único para cadastro de usuários, sendo apenas necessário definir perfis para cada aplicação;
2. É possível além de autorização e autenticação centralizar a parte de auditoria. Você pode criar operações no serviço para registro centralizado de ações que o usuário realizou em todas as aplicações;
3. Com todas as ações centralizadas, você pode criar relatórios de auditoria centralizados, por exemplo, você pode saber todos os sistemas que uma pessoa logou, ou todas as últimas ações que um funcionário que acabou de ser demitido fez.
A maior de todas as desvantagens é: Adicionar um novo ponto de falhas a suas aplicações. Ou seja, se o banco ou o serviço de autenticação cair, ninguem vai conseguir logar nas outras aplicações. Pense bem que eu já tive sérios problemas com isso.
Respondi:
15/09/2014
Thiago Moreira
A aplicação gerar um hash e direciona o usuário para o servidor de login com esse parâmetro;
o servidor de login solicita e verifica as credenciais do usuário;
caso o usuário cancele ou as credenciais não se confirmem após N vezes, o servidor de login devolve o usuário para a aplicação, sem confirmar o login, OU
ao confirmar as credenciais, o servidor de login redireciona o usuário de volta para a aplicação, com o ID do usuário e um hash assinado por um valor comum armazenado pelas partes envolvidas.
Dá pra se fazer isto de uma maneira relativamente simples, sem se preocupar com OAuth e outros protocolos mal documentados e complexos demais para a necessidade específica.
Vantagens desta solução:
Portátil - cada parte da aplicação pode ser dividida em diversas máquinas diferentes;
pouco código necessário;
funciona pra uma, duas ou duzentas aplicações, quantas forem necessárias;
escalável, pois não depende de onde cada parte do sistema está rodando;
simples de gerenciar, pois a única informação compartilhada entre as partes é o usuário autenticado, pelo retorno de um ID e assinatura válidos.
Clique aqui para fazer login e interagir na Comunidade :)