Processo di autenticazione

SDK dell'App Directory

Processo di autenticazione (v2.0, attuale)

La maggior parte delle app vuole fornire contenuti specifici per l'utente e capacità interattive. Prima di implementare l'autenticazione, la tua app non conosce l'utente Hootsuite che la sta utilizzando. Questa pagina descrive le tecniche per autenticare un utente Hootsuite con la tua app.

Tieni presente che questa tecnica NON fornisce un metodo di autenticazione con service provider esterni. L'impostazione dell'autenticazione con un provider esterno è tua responsabilità e può essere effettuata con qualunque metodo di autenticazione supportato dal provider.

Noi richiediamo che tutte le app implementino Single Sign-On. Single Sign-On comunica a uno stream della tua app quale utente di Hootsuite la sta visualizzando, fornendo un ID utente. Lo spoofing di tale ID utente viene impedito con l'aiuto di un valore hash (token di sicurezza), autenticando in questo modo la richiesta.

Puoi anche decidere di permettere a un utente di effettuare l'accesso a un qualunque altro account utente, che in seguito dovrai associare manualmente alla tua app mentre utilizzi un'autenticazione Single Sign-On. Puoi offrire account che si connettono dalla tua base utenti o implementare l'autenticazione con un service provider esterno (utilizzando qualunque metodo di autenticazione supportato dal provider). È generalmente consigliabile associare un account di terze parti con uno stream singolo. Indicheremo questa circostanza come una caratteristica per-Stream.

Questo tipo di autenticazione di account di terze parti per-Stream offre il vantaggio di permettere a un utente di connettere più account alla volta, ognuno nel suo stream, senza la necessità di installare la tua app più volte.

Uno dei parametri di URL passato agli stream è l'ID di posizionamento dello stream, chiamato pid. Questo parametro è univoco per ogni stream aggiunto dall'utente ed è utile quando si implementa l'autenticazione per-Stream di un account di terze parti.

Single Sign-On

Viene calcolato l'hash di un identificatore di utente, un timestamp e una chiave segreta (salt) condivisa tra Hootsuite e lo sviluppatore tramite SHA-1, quindi l'hash viene passato all'app. L'hash di verifica può essere ricalcolato dallo sviluppatore dell'app e confrontato con quello che è stato passato. Se corrispondono, si può dire che l'utente a cui fa riferimento l'identificatore ha effettuato l'accesso.

Utilizzando questo metodo, una terza parte non può effettuare lo spoofing di un hash di verifica senza conoscere la chiave segreta condivisa. Il metodo rimane comunque vulnerabile a un attacco replay effettuato da qualcuno in grado di intercettare il traffico di rete non criptato e visualizzare la stringa di query. Questo rischio può essere mitigato utilizzando https e controllando che il timestamp sia recente (non più di 10 secondi diverso dall'ora del tuo server).

Per impostazione predefinita, l'identificatore utente fornito è un identificatore univoco legato all'account di Hootsuite dell'utente. 

Esempio di URL:

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

L'app convaliderebbe questi parametri in quanto tali:

$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 "Accesso effettuato con successo!";
}

Parametri URL passati all'iframe dello stream dell'App:

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)