Mi sitio necesita integrarse con un software de terceros, que vivirá en su propio subdominio, alojado por la compañía de software. Necesito proporcionar a los desarrolladores de terceros un punto final que puedan usar para hacer llamadas API (a mi sitio de WordPress) para permitir que los usuarios de mi sitio accedan al subdominio.
El otro sitio necesita autenticar a los usuarios de mi sitio a través de algún tipo de API.
No estoy seguro de por dónde empezar, pero tengo la sensación de que esto ha sido descubierto por personas más inteligentes que yo. ¡Gracias por adelantado!
api
authentication
customization
single-sign-on
emersonthis
fuente
fuente
Respuestas:
Problemas de secuencias de comandos entre sitios
No puede transferir cookies de autenticación WP entre dominios. Tampoco desea almacenar contraseñas de texto sin formato para iniciar sesión en otra instalación de WP mediante programación. Por lo tanto, deberá hacer que los usuarios inicien sesión en WordPress y luego acceder a su estado de inicio de sesión a través de un punto final API desde el sitio de terceros. Esto permite que WordPress maneje toda la autenticación. Es bastante seguro ya que un usuario tendrá que iniciar sesión físicamente en el lado de WP para que el punto final de la API sirva los datos a un tercero.
Crear un punto final de API
Mira este artículo que acabo de escribir aquí: http://coderrr.com/create-an-api-endpoint-in-wordpress/
Además, puede ver la demostración del código aquí: https://gist.github.com/2982319
Tendrás que descubrir la lógica para las necesidades de tu propia aplicación, pero esto te permitirá crear un punto final donde puedas servir lo que quieras desde el lado de WordPress.
Como está utilizando WordPress como el sitio de autenticación, puede usar una verificación como is_user_logged_in (). Si han iniciado sesión, devuelva un objeto de usuario al tercero con la información que necesite.
Iniciar sesión desde un tercero
Desde el tercero, pueden vincular a su página de inicio de sesión para una experiencia perfecta usando la var. Una vez que haya iniciado sesión, los devolverá al sitio de terceros.
Inicios de sesión remotos
Si necesita iniciar sesión en WordPress desde un sitio de terceros, puede usar algunas funciones simples de WP enumeradas en este sitio: http://kuttler.eu/code/log-in-a-wordpress-user-programmatic/
Definitivamente necesitarás usar un secreto compartido y crear hashes basados en el tiempo a partir de ese secreto para mantener las cosas seguras. Básicamente, así es como se vería:
El tercero envía una solicitud con una marca de tiempo y un token generado por un secreto compartido:
Instalación de WordPress recibe la solicitud:
fuente
counter
lugar detime()
y pasarlo con la solicitud. Ambas partes mantienen el último contador pasado, y cuando api recibe una solicitud con un nuevo contador, verifica que el nuevo sea mayor que el último. De esta manera, una demora no puede causar ningún daño.