web-dev-qa-db-fra.com

Quelle est la bonne façon d'authentifier un utilisateur?

Il y a quelques années, j'ai écrit un petit composant très incomplet qui authentifiait des utilisateurs venant de l'extérieur de Joomla! c'est-à-dire une application mobile.

Existe-t-il un moyen approprié ou préféré de gérer cela?

7
Nestor Ledon

Selon votre commentaire, vous recherchez une configuration OAuth. Pour autant que je sache, Joomla a Oauth des classes intégrées au noyau, mais ces classes doivent permettre à Joomla d’agir en tant que client (votre application mobile est un client dans votre cas). Ils ne vous donnent pas la possibilité de fonctionner en tant que serveur.

J'ai récemment utilisé ce package pour configurer un serveur OAuth2 sur le framework Joomla: https://github.com/bshaffer/oauth2-server-php . Cela a très bien fonctionné. Cela prendra certainement quelques jours pour que tout soit configuré et opérationnel, mais vous pouvez certainement le configurer dans Joomla.

Il existe différentes méthodes pour authentifier un utilisateur dans OAuth2. L’approche habituelle consiste à demander au client de rediriger l’utilisateur vers votre site pour saisir ses informations de connexion. Ensuite, vous redirigez l'utilisateur vers le client avec un code que le client transforme en un jeton d'accès.

Comme il semble que vous contrôliez également l'application mobile, cela n'est pas nécessaire. Vous faites confiance au client (j'espère), vous pouvez donc simplement vous connecter à l'application.

Vous utiliseriez ensuite l'option "Identifiant du propriétaire de la ressource/mot de passe" décrite ici: http://bshaffer.github.io/oauth2-server-php-docs/overview/grant-types/ . Dans ce cas, l'application mobile envoie simplement le nom d'utilisateur/mot de passe saisi à votre site Joomla, puis le site Joomla renvoie un jeton pour validation. Le jeton peut être sauvegardé et utilisé la prochaine fois au lieu de les avoir reconnecté.

Cela vous donne le contrôle sur le site Joomla pour invalider les jetons et forcer les utilisateurs mobiles à se connecter à nouveau.

5
David Fritsch

Vous pouvez utiliser le code suivant:

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

où:

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

Vous voulez utiliser quelque chose comme OAuth/OAuth2. Mon idée ici n'est pas vraie OAuth mais c'est ma connaissance de Joomla qui est la plus simple.

Validez l'utilisateur via l'appel d'API du composant dans Joomla pour créer un jeton attaché à son IP, puis redirigez-le avec une demande GET qui valide ce jeton et crée la session pour eux. Le jeton est facile à sécuriser puisqu'il repose sur l'IP pour authentifier l'utilisateur déjà authentifié. Le meilleur moyen est de s'assurer qu'il ne peut être utilisé qu'une seule fois. Pour l'appel de l'API, il doit s'agir d'une demande cryptée SSL POST) pour obtenir les meilleurs résultats.

Envoyez donc une requête POST à votre composant contenant l'adresse IP, le nom d'utilisateur et le mot de passe de l'utilisateur. Si tout est valide, vous renvoyez un jeton. Vous redirigez ensuite l'utilisateur vers votre composant contenant ce jeton vers configurer la session. Je ne sais pas comment l’API Joomla peut être utilisée pour connecter une personne, mais je suis sûr qu’il ya quelque chose à faire.

Edit: Il semblerait que csbenjamin ait répondu à l’API pour se connecter.

3
Jordan Ramstad