fredec 0 Denunciar post Postado Junho 17, 2010 Gostaria de desenvolver um sistema com validação de usuário, como qualquer outro, mas esse usuário só conseguiria se logar no sistema web caso ele esteja cadastrado ou "aprovado" em um banco de dados de um outro domínio, um tipo de centro de licenças. Cada usuário teria sua licença ativa ou desativada. Só seria possível logar em qualquer sistema cliente se o seu usuário no sistema "mestre" estivesse como Ativo. Deu pra entender? Não sei nem por onde começar... Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Jaime_Pinheiro 0 Denunciar post Postado Junho 17, 2010 Fredec, já viu aqueles sistemas de segurança de chave dupla, tipo cofre de banco que um gira de um lado, o outro de outro? Interessante seria desenvolver o sistema master como um webservice. Como uma solução simples, pode receber um post com usuario e senha do master mais uma chave do usuario pretendido. O sistema master com esses dados retornaria o id do usuario, um xml com retorno do serviço, mensagens etc. O sistema filho precisaria destas informações para autenticar o tal usuario. Existem varias formas de fazer... Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Junho 18, 2010 @fredec, O processo consiste em duas partes: Identificação http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Existem 3 formas de identificar alguém: 1. Uma coisa que o usuário conhece: Senhas, frases secretas, etc... Essa é provavelmente a forma mais conhecida de identificação pelos desenvolvedores web onde, através de um formulário de login, o usuário entra com seu nome e senha. 2. Uma coisa que o usuário possui: Software instalado, cartão magnético, certificado digital, etc... Muito utilizado por bancos; O usuário, ao cadastrar-se, recebe um certificado digital que é instalado em sua máquina e, através de uma conexão SSL, o certificado é utilizado para identificar e criptografar os dados enviados e recebidos, utilizando-se assim, as chaves públicas e privadas, tanto do banco quanto do certificado digital do cliente. 3. Uma coisa que o usuário herda. (biometria em geral) Impressão digital, iris, etc... Muito utilizado em meios militares, onde o usuário é identificado utilizando-se características que só ele possui. Após conhecer o usuário (identificação) chega-se à segunda parte: Autenticação: A autenticação pode ser feita de N formas, mas para não complicar muito, penso que a ACL pode ser adequada para o seu caso. A ACL baseia-se em uma lista de permissões, anexadas à um determinado recurso e que define o que o usuário pode ou não fazer, quais operações pode efetuar e quais não pode. Bom, pensando que você já possui uma identificação do usuário, você precisa agora autenticá-lo e, para isso, precisará definir as permissões. Um sistema de permissões, interessante, para quem trabalha com web consiste nas operações básicas que alguém pode efetuar em um banco de dados http://forum.imasters.com.br/public/style_emoticons/default/seta.gif CRUD. Um bom sistema de usuários, consiste normalmente, em grupos de usuários: Administrador http://forum.imasters.com.br/public/style_emoticons/default/seta.gif GID = 1 Fulano http://forum.imasters.com.br/public/style_emoticons/default/seta.gif UID = 1 Beltrano http://forum.imasters.com.br/public/style_emoticons/default/seta.gif UID = 2 Usuário http://forum.imasters.com.br/public/style_emoticons/default/seta.gif GID = 2 Ciclano http://forum.imasters.com.br/public/style_emoticons/default/seta.gif UID = 3 Com isso cada recurso terá seu grupo e seu dono e, dessa forma: O dono pode fazer alguma coisa O grupo pode fazer alguma coisa Os outros podem fazer alguma coisa Pensando que os sites que você quer definir as permissões são, na verdade, os recursos alvo da autenticação: site1.com: Dono http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Fulano http://forum.imasters.com.br/public/style_emoticons/default/seta.gif pode Criar, Ler, Atualizar e Excluir. Grupo http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Administrador http://forum.imasters.com.br/public/style_emoticons/default/seta.gif pode Ler e Atualizar Outros http://forum.imasters.com.br/public/style_emoticons/default/seta.gif pode Ler site2.com Dono http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Ciclano http://forum.imasters.com.br/public/style_emoticons/default/seta.gif pode Criar, Ler, Atualizar e Excluir Grupo http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Usuário http://forum.imasters.com.br/public/style_emoticons/default/seta.gif pode Ler e Atualizar Outros http://forum.imasters.com.br/public/style_emoticons/default/seta.gif não pode nada Para anexar as permissões à um recurso (no seu caso um site) utiliza-se operações lógicas, bit a bit: Outros: Criar http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 0x0001 Ler http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 0x002 Atualizar http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 0x004 Excluir http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 0x008 Grupo: Criar http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 0x010 Ler http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 0x020 Atualizar http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 0x040 Excluir http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 0x080 Dono: Criar http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 0x100 Ler http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 0x200 Atualizar http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 0x400 Excluir http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 0x800 Supondo que o site1.com tenha a permissão 0x0F62, quando o sistema identificar o usuário, é verificado à qual grupo ele pertence e, assim, sabemos: site1.com pertence ao Fulano do grupo Administrador, se o usuário que acabou de se identificar for o Beltrano, sabemos que ele é do grupo Administrador, mas não é o dono do recurso (site), então: $perms = 0x0F62; if ( 0x0F60 & 0x010 ) echo 'O Beltrano pode criar' , PHP_EOL; if ( 0x0F60 & 0x020 ) echo 'O Beltrano pode ler' , PHP_EOL; if ( 0x0F60 & 0x040 ) echo 'O Beltrano pode atualizar' , PHP_EOL; if ( 0x0F60 & 0x080 ) echo 'O Beltrano pode excluir' , PHP_EOL; A saída será: O Beltrano pode ler O Beltrano pode atualizar Porém, se o recurso em questão for o site 2 e o mesmo Beltrano tiver se identificado, o sistema verificará que o Beltrano não pertence ao grupo do Usuário e que o dono do site 2 é o Ciclano, como as permissões do recurso (site) em questão (site2.com) é 0x0F60, a verificação: $perms = 0x0F60; if ( 0x0F60 & 0x001 ) echo 'O Beltrano pode criar' , PHP_EOL; if ( 0x0F60 & 0x002 ) echo 'O Beltrano pode ler' , PHP_EOL; if ( 0x0F60 & 0x004 ) echo 'O Beltrano pode atualizar' , PHP_EOL; if ( 0x0F60 & 0x008 ) echo 'O Beltrano pode excluir' , PHP_EOL; A saída será vazia, que significa que o Beltrano não pode fazer nada no site2.com já que, não é o dono, não faz parte do grupo e o recurso (site2.com) não permite que os outros façam qualquer coisa. Com isso, você pode fazer a identificação do usuário em cada site, da forma que achar melhor e, como o Jaime_Pinheiro disse, você pode deixar a parte de autenticação centralizada em um servidor, utilizando-se de webservices (SOAP pode ser a melhor opção) para determinar quais operações um determinado usuário poderá ter em um determinado recurso. ;) Compartilhar este post Link para o post Compartilhar em outros sites