Crie API para conexão única com site de terceiros

12

Meu site precisa ser integrado a um software de terceiros, que residirá em seu próprio subdomínio, hospedado pela empresa de software. Eu preciso fornecer aos desenvolvedores de terceiros um endpoint que eles possam usar para fazer chamadas de API (para meu site wordpress) para permitir que os usuários do meu site acessem o subdomínio.

O outro site precisa autenticar usuários do meu site por meio de algum tipo de API.

Não sei por onde começar, mas minha sensação é de que isso foi descoberto por pessoas mais inteligentes que eu. Obrigado antecipadamente!

    
por emersonthis 18.07.2012 / 19:42

1 resposta

15

Problemas de script entre sites

Você não pode transferir cookies de autenticação do WP entre domínios. Você também não deseja armazenar senhas de texto simples para efetuar login em outra instalação do WP programaticamente. Portanto, você precisará fazer com que os usuários façam login no WordPress e acessem o status de login por meio de um endpoint da API do site de terceiros. Isso permite que o WordPress manipule toda a autenticação. É bastante seguro, já que o usuário precisará efetuar login fisicamente no lado do WP para que o terminal da API forneça os dados para o terceiro.

Criar um endpoint da API

Confira este artigo que acabei de escrever aqui: enlace

Além disso, você pode ver a demonstração do código aqui: enlace

Você terá que descobrir a lógica para as necessidades de seu próprio aplicativo, mas isso permitirá que você crie um ponto de extremidade no qual você poderá exibir o que quiser do lado do WordPress.

Como você está usando o WordPress como o site de autenticação, você pode usar um cheque como is_user_logged_in (). Se eles estiverem logados, retornem um objeto de usuário para o terceiro com qualquer informação que eles precisem.

Fazendo login do terceiro

A partir de terceiros, eles podem vincular a sua página de login para uma experiência perfeita usando o redirect_to query var. Uma vez logado, ele irá repassá-los para o site de terceiros.

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

Logins remotos

Se você precisar fazer o login de usuários para o WordPress em um site de terceiros, você pode usar algumas funções simples do WP listadas neste site: enlace

Você definitivamente precisará usar um segredo compartilhado e criar hashes com base no tempo para manter as coisas seguras. Basicamente, aqui está o que seria:

O terceiro envia uma solicitação com um timestamp e um token gerado por um segredo compartilhado:

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

A instalação do WordPress recebe a solicitação:

$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!
    
por Brian Fegter 18.07.2012 / 20:43