Arrière-plan
J'ai le site Web Joomla et l'application mobile s'exécutant sur un serveur différent (programmé à l'aide de JavaScript). Les deux appartiennent à la même partie et les utilisateurs ont des comptes similaires avec des identifiants et des mots de passe identiques (bien que ces identifiants et mots de passe soient stockés dans des bases de données différentes, nous nous assurons qu'ils sont synchronisés et identiques).
Comportement actuel
Les utilisateurs se connectent à l’application (la session est créée sur le serveur de l’application) et accèdent au bouton (site Web). Lorsque vous appuyez sur le bouton, une nouvelle fenêtre s’ouvre (page de connexion du site Web). Ils doivent insérer leurs identifiants une fois de plus, puis accéder à leurs comptes.
Objectif
Autorise les utilisateurs à accéder au site Web sans consulter à nouveau la page de connexion (ils sont vérifiés lorsqu'ils se connectent à l'application, il n'est donc pas nécessaire de vérifier à nouveau).
Tentatives
J'ai cherché un plugin approprié qui connecte Joomla à la plate-forme App (Appery) mais je n'ai pas pu le trouver. De nombreux plug-ins Joomla autorisent une connexion unique à l'aide de Facebook, Google, etc. Mais je n'ai trouvé personne. Word avec une application mobile qui existe sur un serveur différent avec une base de données séparée
Session et Cookie sont exclus en tant que les deux sur des serveurs différents.
J'ai aussi fait référence à ceci Connexion d'un utilisateur sans obtenir le mot de passe de ce dernier , mais je ne pouvais pas comprendre de quel plugin l'OP parle.
J'ai configuré et activé LDAP, mais je ne pouvais toujours pas faire fonctionner le SSO.
Étant donné que les bases de données séparées partagent les mêmes informations d'identification d'utilisateur, j'ai pensé qu'il serait préférable de créer un plug-in d'authentification pour mon site Web, qui s'authentifie par rapport à la base de données d'application mobile. De cette façon, lorsqu'un utilisateur se connecte à l'application mobile, il dispose déjà d'une session transportable. Cependant, je n'ai jamais créé de plugin auparavant, encore moins de plugin de connexion .. (n'importe où par où commencer?)
J'ai également eu recours à cette idée ( https://stackoverflow.com/questions/29115209/amend-form-content-on-ajax-request ) mais d'après les réponses que j'ai obtenues, cela m'a semblé irrationnel. .
J'ai cherché sur Internet pendant un bon bout de temps et j'ai posté plusieurs questions en essayant d'explorer mon chemin à travers cela. J'apprécierais profondément votre aide et votre soutien.
Si ce n’est pas le bon endroit pour poser une telle question, veuillez vous référer à celle qui convient.
Vous devez implémenter un jeton de longue durée , un secret partagé entre Joomla et le serveur d'applications mobiles. Ce jeton d’accès permet d’accéder aux deux serveurs et est soumis à chaque appel d’API.
Conformément à la pratique du protocole OAuth, une fois l'utilisateur authentifié et le jeton de longue durée transmis à l'application mobile. L'application peut accéder au serveur tant que le jeton est actif. S'il expire, l'utilisateur doit ré-autoriser.
Dans votre cas, vous devez implémenter dans Joomla un moyen (plug-in) d'authentifier l'utilisateur avec le jeton et d'exécuter les opérations requises. Les jetons sont partagés entre les deux serveurs dans une table/service.
Enfin, si vous souhaitez collaborer avec Joomla Mobile Apps, nous venons de créer un groupe de travail: équipe pour les applications mobiles
Disclaimer: Je suis le principal développeur de Composer App pour Joocial. Dans ce chapitre documentation , vous pouvez vérifier le fonctionnement d'un plug-in d'authentification OAuth.
Vous devez créer un plugin système qui se comporte comme une API. Joomla a pour fonction de se connecter par programmation. Vous pouvez vérifier l'utilisateur du plugin existant.
Bien sûr, vous devez protéger l'API avec la clé secrète partagée entre les serveurs.
Vous devez probablement stocker la session sur mobile et l'ajouter à chaque demande.
Je l’ai fait pour intégrer ce qui est avec joomla. Je ne m'en souviens pas vraiment car je l'ai fait il y a longtemps.