Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Flávio Douglas Nunes

Sistema de autenticação centralizado

Recommended Posts

Saudações!

Estou para começar um novo projeto, e preciso criar um sistema de login centralizado, parecido com os serviços do google.

 

Por exemplo, tenho um único "usuário e senha", que devem servir para autenticar diversas aplicações distintas.

 

Alguém pode me dar alguma sugestão, de como centralizar essa autenticação?

 

Agradeço a atenção!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara eu nunca fiz isso, mas se eu fosse hoje fazer um seria tipo assim:

eu mandava via url o parâmetro para o sistema central redirecionar (acho que o google faz assim) por exemplo você tem o siteA, siteB, siteC... e decidiu fazer todos os logins no siteB.com então seu formulário de login ficaria assim

 

 

<form action="siteB.com?retorne_para=site_atual.com" ... >

  seu campos

</form>

sendo que site_atual.com vai ser site siteA.com no siteA, siteB.com no siteB, siteC.com no siteC, e assim por diante. É claro que você pode fazer umas coisas mais interessantes como um site default que no caso do google é google.com mas poderia ser youtube.com ou qualquer outro (site da google) sem problemas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Flávio,

 

Ao meu ver, isso é mais uma questão de modelagem.

O que você precisa é autenticar, certo? Se for, caso o login seja verdadeiro você exibe um "menu" com as opções de sistemas e em cada sistema você verifica se o usuário está autenticado via sessão, por exemplo.

Se for acessado por um dos sistemas e não tiver autenticado, você redireciona para a página de login.

 

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal desde já obrigado pelas respostas,

 

mas os sistemas que preciso autenticar estarão em servidores distintos!

 

Na verdade o que preciso realmente e criar uma central de autenticação, onde os usuários de todos

os sistemas ficaram armazenados, e consultaram esta central na hora de logar na aplicação e informar quais permissões o usuário terá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como sua aplicação vai ficar em servidores distintos você pode fazer como eu falei mas não aconselho a usar mesma session senão seu sistema vai perder performance se toda vez que o usuário acessar uma página em um servidor você tiver que verificar autentição em outro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você criar um session handler personalizado, você define o que vai acontecer em cada um dos estados da sessão (abertura, encerramento, gravação, exclusão e limpeza) e, com isso, pode armazenar as informações de autenticação num banco de dados remoto ou, melhor ainda, consumir um serviço REsT (que por sua vez faria uso de um banco de dados) e permitir múltiplas autenticações crossdomain sem maiores problemas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se fizer como eu sugeri no meu primeiro comentário o seu cliente (internauta) só precisa fazer login em um único domínio e pode acessar qualquer um dos demais sites/sistemas que será identificado, mas como eu disse antes, levando em consideração que os sistemas vão ficar hospedados em servidores diferentes não aconselho que faça isto salvando a Session em um único servidor devido a perda de performance, no entanto você pode criar uma parada tipo webService que no servidor principal (no qual vai fazer a autenticação) se comunicando com os demais servidores e criar sessões, cookies... para o usuário no momento em que ele se loga, isso com certeza funciona mais vai dar um trabalho danado, pode dar uma olhada no link do brother acima o Bruno Augusto session handler personalizado eu não tinha visto falar mas tem cara de que pode te ajudar



Essa coisa de crossdomain no comentário do Bruno Augusto parece que foi feita pensando em problemas parecidos com o seu, o que eu falei acima funciona (segundo eu rs...) mas você vai ter que fazer do zero, por isso aconselho dar uma olhada nisto e qualquer coisa você pode mesclar tudo se o que tem lá num for como você quer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode compartilhar dados entre sites de domínios diferentes de uma forma versátil através da técnica JSONP (Ajax Crossdomain em Javascript), quando você inclui um javascript de outro síte em seu próprio esse script é requisitado usando os cookies do outro síte e portando com a sessão do outro síte. Dessa forma, o outro síte pode lhe enviar informações a respeito dessa sessão do usuário. Vou dar um exemplo:

 

Você tem eu seu sitecliente.com.br um arquivo com um código parecido com este:

 

<script src="htttp://siteprincipal.com.br/login/login_externo.php?cliente=sitecliente&callback=loginCallback"></script>

 

Ao reconhecer essa requisição o site principal pode responder um script como esse:

 

loginCallback({"id_do_usuario":42, "nome":"Jeferson"});

 

Pronto, ao executar esse script fornecido pelo site principal seu site cliente obtêm informações da sessão. Claro que esse exemplo não é seguro, mas isso pode ser resolvido com algum sistema de autorização parecido com o OAuth.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O jeito mais facil e seguro e via sao por session tipo um webservice.

 

Login fica concentrado no dominio principal.

 

Quando um site nao estiver logado, redireciona ao site principal q verifica o login e redireciona de volta com um token q pode ser usado para obter dados do cliente via curl, garantindo segurança na transação dos dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.