Créer une API pour la connexion unique avec un site tiers

12

Mon site doit s'intégrer à un logiciel tiers, qui vivra sur son propre sous-domaine, hébergé par l'éditeur de logiciel. Je dois fournir aux développeurs tiers un point de terminaison qu'ils peuvent utiliser pour passer des appels d'API (sur mon site wordpress) afin de permettre aux utilisateurs de mon site d'accéder au sous-domaine.

L'autre site doit authentifier les utilisateurs de mon site via une sorte d'API.

Je ne sais pas par où commencer, mais j’ai le sentiment que cela a été compris par des gens plus intelligents que moi. Merci d'avance!

    
posée emersonthis 18.07.2012 - 19:42

1 réponse

15

Problèmes de script intersite

Vous ne pouvez pas transférer les cookies d’autorisation WP entre les domaines. Vous ne souhaitez pas non plus stocker les mots de passe en texte brut pour vous connecter par programme à une autre installation de WP. Les utilisateurs doivent donc se connecter à WordPress, puis accéder à leur statut de connexion via un point de terminaison API à partir du site tiers. Cela permet à WordPress de gérer toute l’authentification. C'est assez sûr, car un utilisateur devra se connecter physiquement au côté de WP pour que le noeud final de l'API transmette les données à un tiers.

Créer un point de terminaison d'API

Consultez cet article que je viens d'écrire ici: enlace

Vous pouvez également voir la démonstration du code ici: enlace

Vous devrez comprendre la logique pour les besoins de votre propre application, mais cela vous permettra de créer un point de terminaison où vous pourrez diffuser tout ce que vous voulez du côté de WordPress.

Puisque vous utilisez WordPress comme site d'authentification, vous pouvez utiliser une vérification comme is_user_logged_in (). S'ils sont connectés, renvoyez un objet utilisateur au tiers avec les informations nécessaires.

Connexion à partir d'une tierce partie

Depuis un tiers, ils peuvent créer un lien vers votre page de connexion pour une expérience transparente à l'aide de redirect_to query var. Une fois connecté, il sera renvoyé au site tiers.

http://sub.yourdomain.com/wp-login.php?redirect_to=http%3A%2F%2Fwww.third-party-domain.com

Connexions distantes

Si vous devez connecter des utilisateurs à WordPress à partir d'un site tiers, vous pouvez utiliser quelques fonctions WP simples énumérées sur ce site: enlace

Vous aurez certainement besoin d'utiliser un secret partagé et de créer des hachages basés sur le temps pour préserver la sécurité. En gros, voici à quoi cela ressemblerait:

Un tiers envoie une demande avec un horodatage et un jeton généré par un secret partagé:

$shared_secret = 'foobar'; //do not send this to the API endpoint
$timestamp = time();
$token = md5($shared_secret.$time_stamp);

L'installation de WordPress reçoit la demande:

$shared_secret = 'foobar';
$timestamp = esc_attr($_GET['timestamp']);

if((time() - $timestamp) > 30) # Threshold is 30 seconds
    //do something here - TOKEN expired!

$token = md5($share_secret.$timestamp);
$token_to_check = esc_attr($_GET);

if($token == $token_to_check)
    //authenticated!
    
réponse donnée Brian Fegter 18.07.2012 - 20:43

Lire d'autres questions sur les étiquettes