Proceso de autenticación

SDK del directorio de aplicaciones

Proceso de autenticación (versión 2.0; la actual)

La mayoría de las aplicaciones tienen como fin proporcionar contenido específico para los usuarios y capacidades de interacción. Antes de implementar la autenticación, su aplicación será independiente del usuario de Hootsuite que la esté utilizando. En esta página se describen técnicas para autenticar usuarios de Hootsuite con su aplicación.

Tenga en cuenta que esta técnica NO proporciona un método para realizar el proceso de autenticación con proveedores de servicios externos. Es su responsabilidad configurar la autenticación con proveedores externos mediante el uso de los métodos de autenticación que estos admitan.

Se requiere que todas las aplicaciones implementen el inicio de sesión único. Este método, gracias a que proporciona un ID de usuario, indica a una columna de la aplicación qué usuario de Hootsuite la está visualizando. Con la ayuda de un valor hash (token de seguridad), se evita la suplantación de dicho ID de usuario, con lo que se autentica la solicitud.

También puede decidir que el usuario inicie sesión en otra cuenta de usuario y usted asociar dicha cuenta con la aplicación de forma manual empleando el método de autenticación de inicio de sesión único. Puede ofrecer conectar las cuentas de su propia base de usuarios o implementar la autenticación con un proveedor de servicios externos (empleando los métodos de autenticación que estos admitan). Lo que se recomienda normalmente es asociar una cuenta de terceros con una sola columna. Llamemos a esta particularidad "autenticación por columna".

Este tipo de autenticación de cuentas de terceros por columna tiene la ventaja de que los usuarios pueden conectar varias cuentas al mismo tiempo (cada una con su propia columna) sin requerir que la aplicación se instale varias veces.

Uno de los parámetros de URL transmitidos a las columnas constituye el ID de ubicación (PID) de la columna. Este identificador es único para cada columna que ha agregado un usuario y resulta útil a la hora de implementar la autenticación por columna de una cuenta de terceros.

Inicio de sesión único

Se aplica un algoritmo hash con cifrado SHA-1 a un identificador de usuario, a una marca de tiempo y a una clave secreta (Salt) compartidos entre Hootsuite y el desarrollador. A continuación, se transmiten a la aplicación. El desarrollador de la aplicación puede volver a calcular el hash de verificación y compararlo con el que se transmitió. Si coinciden, puede considerarse que el usuario al que hace referencia el identificador ha iniciado sesión.

Al emplear este método, un tercero no podrá suplantar un hash de verificación si no conoce la clave secreta compartida. No obstante, este método es vulnerable a ataques de reproducción si un atacante es capaz de interceptar el tráfico de red sin cifrar y visualizar la cadena de consulta. Esto puede evitarse utilizando el protocolo HTTPS y comprobando que la marca de tiempo sea reciente (no debe haber una diferencia superior a 10 segundos con respecto a la hora de su servidor).

De forma predeterminada, el identificador de usuario suministrado constituye un ID único que está ligado a la cuenta de Hootsuite del usuario. 

URL de muestra:

https://app.somewhere.com?i=1667985&ts=1310681657&token=231a3fb74139c74c37e9111ceb59ce02a349ef88

La aplicación validaría estos parámetros de la siguiente forma:

$secret = 'sharedSecretABCD1234'; // defined in App configuration at hootsuite.com/developers
$user_id   = $_REQUEST['i'];
$timestamp = $_REQUEST['ts'];
$token     = $_REQUEST['token'];
if (sha1($user_id . $timestamp . $secret) == $token)
{
    echo "Inicio de sesión realizado correctamente.";
}

Parámetros de URL transmitidos al marco flotante de la columna de aplicaciones:

lang=en
timezone=7200
pid=2823         // placement ID, unique for each stream per user
uid=1234567      // Hootsuite user ID
i=1234567        // user identifier (optionally entered by user upon App installation)
ts=1318362023    // timestamp
token=123abc...  // security token (sha1 hash)