ti-enxame.com

Qual é a maneira correta de autenticar um usuário?

Alguns anos atrás, escrevi um componente pequeno e muito incompleto que autenticava usuários vindos de fora do Joomla! ou seja, um aplicativo para celular.

Existe uma maneira adequada ou preferida de lidar com isso?

7
Nestor Ledon

Com base no seu comentário, você está procurando uma configuração OAuth. Até onde eu sei, o Joomla possui Oauth) classes incorporadas ao núcleo, mas essas classes são para permitir que o Joomla atue como cliente (seu aplicativo móvel é um cliente no seu caso) .Eles não oferecem a opção de executar como servidor.

Recentemente, usei este pacote para configurar um servidor OAuth2 no Joomla Framework: https://github.com/bshaffer/oauth2-server-php . Funcionou muito bem. Definitivamente, isso levará alguns dias para configurar e funcionar, mas você pode definitivamente configurá-lo no Joomla.

Existem alguns métodos diferentes para autenticar um usuário no OAuth2. A abordagem comum é fazer com que o cliente redirecione o usuário ao seu site para inserir as informações de login. Em seguida, você redireciona o usuário de volta ao cliente com um código que o cliente transforma em um token de acesso.

Como parece que você também controla o aplicativo móvel, isso é desnecessário. Você confia no cliente (espero), para que você possa ter apenas o login do usuário no aplicativo.

Você usaria a opção "Proprietário do recurso/credenciais de senha" descrita aqui: http://bshaffer.github.io/oauth2-server-php-docs/overview/grant-types/ . Isso faz com que o aplicativo móvel envie o usuário/senha inseridos no seu site Joomla e, em seguida, o site Joomla envia de volta um token para validação. O token pode ser salvo e usado na próxima vez, em vez de fazer o login novamente.

Isso dá a você controle no site Joomla para invalidar tokens para forçar os usuários móveis a fazer login novamente.

5
David Fritsch

Você pode usar o seguinte código:

JFactory::getApplication()->login($credentials);

onde:

$credentials = Array('username' => string, 'password' => string);
4
csbenjamin

Você deseja usar algo como OAuth/OAuth2. Minha idéia aqui não é verdadeira OAuth mas com base no meu conhecimento do Joomla da maneira mais fácil.

Valide o usuário por meio de uma chamada de API ao componente no Joomla para criar um token anexado ao seu IP e, em seguida, redirecione-o com uma solicitação GET que valide esse token e crie a sessão para ele. O token é fácil de proteger, pois conta com o IP para autenticar o usuário já autenticado. A melhor maneira é garantir que ele possa ser usado apenas uma vez. Para a chamada da API, deve ser uma solicitação criptografada SSL POST para obter os melhores resultados.

Portanto, envie uma solicitação POST para o componente que contém o IP, o nome de usuário e a senha do usuário. Se tudo for válido, você enviará um token de volta. Em seguida, redirecione o usuário para o componente que contém esse token para Não sei como a API do Joomla pode ser usada para fazer o login de uma pessoa, mas tenho certeza de que há algo para isso.

Editar: parece que a resposta do csbenjamin foi inserida na API para fazer login.

3
Jordan Ramstad