Processus d'authentification

SDK du Répertoire des applis

Processus d'authentification (v2.0, actuelle)

Le but de la plupart des applis est de fournir à l'utilisateur des contenus spécifiques et des capacités d'interaction. Avant de mettre en place l'authentification, votre appli doit être indépendante de l'utilisateur Hootsuite qui l'utilise. Cette page décrit les techniques qui permettent d'authentifier un utilisateur Hootsuite avec votre appli.

Notez que cette technique ne constitue PAS une méthode pour s'authentifier avec des prestataires de services externes. Le paramétrage de l'authentification avec un prestataire externe relève de votre responsabilité ; vous êtes libre d'utiliser n'importe quel type de méthode d'authentification qu'il prend en charge.

Nous demandons à toutes les applis d'implémenter le système d'authentification unique. Cela permet d'indiquer à un flux de votre appli quel utilisateur Hootsuite le consulte en fournissant un ID utilisateur. L'usurpation de cet ID utilisateur est empêché grâce à une valeur de hachage (jeton de sécurité), permettant ainsi l'authentification de la requête.

Vous pouvez également choisir de permettre à un utilisateur de se connecter à n'importe quel autre compte utilisateur et l'associer manuellement avec votre appli vous-même en utilisant le système d'authentification unique. Vous pouvez proposer des comptes de connexion depuis votre propre base d'utilisateurs ou implémenter une authentification avec un prestataire de services externe (en utilisant une méthode d'authentification qu'il prend en charge). Il est généralement recommandé d'associer un compte tiers avec un flux unique. C'est ce que l'on appelle le mode « par-flux ».

Cette authentification de compte tiers « par-flux » a le bénéfice de permettre à un utilisateur de se connecter à plusieurs comptes en même temps, chacun sur son propre flux, sans avoir besoin d'installer votre appli plusieurs fois.

L'un des paramètres d'URL transmis aux flux est l'ID de placement du flux, le pid. Il est unique pour chaque flux ajouté par un utilisateur et il est utile pour la mise en place de l'authentification « par-flux » d'un compte tiers.

Authentification SSO

Un identifieur d'utilisateur, un horodatage et une clé secrète (salt), partagés entre Hootsuite et le développeur de l'appli, sont hachés ensemble en utilisant l'algorithme SHA-1, puis transmis à l'appli. Le hachage de vérification peut être recalculé par le développeur de l'appli et comparé à celui qui a été envoyé. S'ils correspondent, l'utilisateur qui a été référencé par l'identifieur peut alors être autorisé à se connecter.

En utilisant cette méthode, un tiers n'est pas en mesure d'usurper un hachage de vérification sans connaître la clé secrète partagée. Toutefois, cette méthode est vulnérable à une attaque par rejeu si un attaquant est capable d'intercepter un trafic réseau non crypté et qu'il voit la chaine de requête. Ce problème peut être réduit en utilisant le protocole https et en vérifiant que l'horodatage est récent (moins de 10 secondes de différence par rapport à l'horloge de votre serveur).

Par défaut, l'identifieur d'utilisateur fourni est un identifieur unique qui est lié au compte Hootsuite de l'utilisateur. 

Exemple d'URL :

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

L'appli devrait valider ces paramètres comme tels :

$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 "Successful login!"; }

Paramètres d'URL transmis au flux d'application iFrame :

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)