Ir para conteúdo

POWERED BY:

Arquivado

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

fredec

Sistema PHP online com validação de licença

Recommended Posts

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

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

@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

×

Informação importante

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