Servidor de autenticação separado da aplicação

13/09/2014

0

Olá, me chamo Thiago Moreira e sou novo no fórum, pelo menos em participação.

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

Thiago Moreira

Responder

Posts

13/09/2014

Marisiana Battistella

Interessante o teu questionamento! Vou acompanhar o post para conhecimento...
Responder

13/09/2014

Roniere Almeida

Interessante o teu questionamento! Vou acompanhar o post para conhecimento...


Tambem, pois futuramente estarei estudando essa parte de servidores.
Responder

14/09/2014

Thiago Moreira

Como tem mais pessoas interessadas na questão, vou citar uma resposta que tive em outro forum:

já usei essa estratégia algumas vezes, existem vantagens e uma grande desvantagem. Como vantagem posso citar:

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:

Quanto à grande desvantagem, iremos utilizar politica failover, e replicações de bd Master e Slave, minimizando possíveis falhas. Por outro lado quando houver falha, não afeta a aplicação em si.
Responder

15/09/2014

Thiago Moreira

A ideia que me deram foi:

Uma das maneiras mais simples é o seu servidor de aplicação usar o seguinte fluxo:

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.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar