web-dev-qa-db-fra.com

OAuth 2 et enregistrement de l'utilisateur authentifié

J'ai un scénario assez particulier.

J'ai un site WordPress (site A) où j'ai un grand nombre d'utilisateurs qui se sont inscrits et j'utilise le plugin s2member pour abonner ces membres afin de permettre l'accès à des parties du site.

Je souhaite publier un autre produit que les utilisateurs doivent souscrire séparément, mais une limitation avec le plug-in s2member signifie que je ne peux pas avoir deux abonnements pour un utilisateur en même temps.

Je suis parvenu à la conclusion que je devais créer un autre site WordPress (Site B) (avec sa propre instance de s2member) et demander à mes utilisateurs de s'y inscrire pour obtenir un abonnement supplémentaire permettant d'accéder au produit.

Mon objectif est de simplifier au maximum le processus de rebondissement entre les deux sites Wordpress et de supprimer le besoin de vous réinscrire sur le site B. Je souhaite que les personnes s'inscrivent sur le site A, puis puissent se connecter au site B avec leurs identifiants de connexion du site A.

J'ai consulté le plugin User Sync de WPMUDev, mais le problème, c'est qu'il va extraire toutes les données s2member pour un utilisateur, ainsi que tout le reste, ce que je ne veux pas.

J'ai donc commencé à envisager d'utiliser le site A en tant que fournisseur OAuth et de m'authentifier auprès de celui du site B. J'ai ce système en marche et je peux créer la session connectée et obtenir toutes les informations de l'utilisateur (moins les informations sensibles, bien sûr) sur le site B .

Cela semble très prometteur jusqu'au point où je dois donner à cet utilisateur nouvellement authentifié sur le site B un profil s2member, afin qu'il puisse s'abonner à mon nouveau produit. Je ne peux pas le faire sauf s'ils sont officiellement enregistrés en tant qu'utilisateur sur le site B et je ne peux pas enregistrer l'utilisateur avec leur mot de passe du site A car 1) je ne souhaite pas envoyer ces informations via HTTP (ou HTTPS) et 2) s'ils mettent à jour leur mot de passe sur le site A, celui-ci ne sera pas mis à jour sur le site B.

Cela m'amène à ma question à un million de dollars: comment enregistrer/enregistrer un utilisateur sans mot de passe sur mon site B une fois qu'il s'est authentifié auprès du site A?

Si vous voyez d’autres possibilités avec la situation que j’ai expliquée, je suis ouvert aux suggestions.

Merci.

1
Ash Thornton

Il semble que vous insistiez pour vous rendre la vie difficile. L'implémentation de tout type d'API est sujette aux erreurs des meilleurs développeurs et la synchronisation en temps réel peut échouer à cause d'erreurs de réseau, de bugs, etc., et je serais très hésitant avant de choisir une telle option.

Utiliser un réseau est probablement la meilleure option pour plusieurs raisons, mais si vous pensez que cela ne correspond pas à vos besoins, votre meilleure alternative consiste simplement à vous connecter directement à la base de données du site A pour obtenir les informations pertinentes. En un sens, il s’agit d’une variante de l’API, mais comme elle ne dispose que d’une source faisant autorité pour les données et que vous utiliserez des protocoles testés au combat pour extraire les informations, les chances de réussite de la mise en œuvre sont bien plus grandes.

0
Mark Kaplun