Passer au contenu principal

Créer un OAuth App

Mis à jour aujourd’hui

Eventmaker vous permet de configurer une authentification unique (SSO) en marque blanche.

Qu'est-ce qu'une authentification unique (SSO) ?

La SSO est un processus d'authentification/autorisation grâce auquel un utilisateur peut se connecter à plusieurs services à l'aide des mêmes identifiants.

La configuration d'une SSO fait d'Eventmaker le composant principal de votre système d'authentification/autorisation. Nous pensons que c'est l'endroit idéal, car Eventmaker est l'endroit où sont stockées les données de vos contacts.

Lorsque vous créez un site web avec Eventmaker, celui-ci peut facilement devenir un service accessible via votre SSO. Vos contacts peuvent ainsi se connecter aux sites web de chacun de vos événements à l'aide des mêmes identifiants et récupérer toutes les données de leurs inscriptions précédentes.

L'objectif de cet article est de vous aider à déléguer l'authentification et l'autorisation de votre propre site web (qui n'a pas été créé avec Eventmaker) à votre SSO alimenté par Eventmaker.

Activation du SSO de votre compte Eventmaker

Cette partie n'est pas encore accessible et doit être configurée par un administrateur Eventmaker. Le résultat est un système de connexion/inscription au-dessus de vos contacts Eventmaker, accessible sur votre propre domaine et avec votre propre image de marque.

La partie autorisation d'un SSO Eventmaker utilise le protocole OAuth 2.

Flux de l'application web

Le flux d'autorisation des contacts pour votre application est le suivant :

1️⃣Depuis votre application, les contacts sont redirigés vers votre SSO pour demander leur identité.

2️⃣Les contacts sont redirigés vers votre site par Eventmaker.

3️⃣Votre application accède à l'API Eventmaker avec le jeton d'accès du contact et récupère le contact.

Enregistrement d'une application OAuth

Avant de commencer, vous devez enregistrer votre application et fournir un nom et une ou plusieurs URL de redirection (utilisées à l'étape 2 du flux). Une fois cette opération effectuée, vous obtiendrez un identifiant d'application (UID) et un secret qui seront utilisés lors du flux d'autorisation.

Cette étape n'est également accessible qu'aux administrateurs Eventmaker pour le moment, veuillez donc nous contacter 😊.

1. Demandez l'une de vos identités de contact Eventmaker

GET https://<sso-domain>/oauth/authorize

Paramètres :

client_id : l'identifiant unique (UID) de votre application que vous avez reçu d'Eventmaker lors de l'enregistrement de votre application.

redirect_uri : l'URL de votre application vers laquelle les utilisateurs seront redirigés après autorisation. Elle doit correspondre à l'une des URL de redirection utilisées lors de l'enregistrement de votre application.

response_type : code

scope : public (la seule portée actuellement disponible)

state : une chaîne aléatoire impossible à deviner. Elle est utilisée pour protéger contre les attaques par falsification de requêtes intersites.

locale : facultatif, la locale à utiliser (en, fr, es, de, pt, it + nouvelles langues potentiellement prises en charge par Eventmaker). L'utilisateur pourra la modifier une fois sur l'interface de connexion.

Exemple :

http://my-sso.com/oauth/authorize?client_id=ccd2524cf6d3e8feb457dd912cd73f07c80a311875bb3fb0c776a29301626bc0&redirect_uri=https%3A%2F%2Fmy-app.com%2Fauth%2Foauth%2Fcallbac&scope=public&state=b6c7d807b564af9e63da5ce1484403d9

Cela demandera au contact de s'authentifier sur votre SSO et permettra à votre application Accès à ses données.

2. Les utilisateurs sont redirigés vers votre site

Si le contact accepte votre demande, votre SSO le redirige vers votre site avec un code temporaire dans un paramètre de code ainsi que l'état que vous avez fourni à l'étape précédente dans un paramètre d'état. Si les états ne correspondent pas, cela signifie qu'un tiers a créé la demande et vous devez interrompre le processus.

Échangez ce code contre un jeton d'accès :

POST https://<sso-domain>/oauth/token

Paramètres :

client_id : l'identifiant unique (UID) de votre application que vous avez reçu d'Eventmaker lors de l'enregistrement de votre application.

client_secret : la clé secrète de votre application que vous avez reçu d'Eventmaker lors de l'enregistrement de votre application.

code : le code que vous avez reçu en réponse à l'étape 1️⃣.

redirect_uri : l'URL de votre application vers laquelle les utilisateurs seront redirigés après autorisation.

code_verifier : une chaîne aléatoire impossible à deviner.

grant_type : authorization_code

Réponse (JSON) :

{
"access_token": "d77f57f68cef725e2dba1fd106e237f027283c42f583c13bf308c65426fe51ab",
"token_type": "Bearer",
"expires_in": 7200,
"scope": "public",
"created_at": 1558633788
}

3. Utilisez le jeton d'accès pour accéder à l'API

Le jeton d'accès vous permet d'envoyer des requêtes à l'API au nom d'un contact.

Authorization: Bearer OAUTH-TOKEN
GET https://<sso-domain>/api/v1/me

Exemple utilisant curl :

curl -H "Authorization: Bearer <token>" http://<sso-domain>/api/v1/me.json

Cet appel API fournira les coordonnées (adresse e-mail, prénom, nom et tous les champs que vous avez définis dans Eventmaker).

Exemple d'application

Nous avons mis en place un exemple d'application Ruby/Sinatra qui utilise un SSO alimenté par Eventmaker : https://github.com/applidget/eventmaker-sso-client-demo. Vous pouvez la tester ici (⚠️ application Heroku gratuite, le démarrage peut prendre quelques secondes). Lisez les sources pour voir comment tout ce qui a été évoqué précédemment peut être mis en œuvre.

Notez qu'il existe probablement une bibliothèque qui vous aidera à réaliser cette intégration dans votre langage. Dans l'application exemple, nous utilisons le gem oauth2.

Fonctionnement en local

Le protocole OAuth nécessite des points de terminaison sécurisés (pour le fournisseur et le client), vous devrez donc disposer d'un serveur HTTPS fonctionnant sur votre ordinateur. Le moyen le plus simple d'y parvenir est d'utiliser serveo.net. Cela vous permettra d'exposer en une seule ligne de commande votre serveur fonctionnant en local à Internet et d'obtenir un point de terminaison sécurisé avec celui-ci.

Gestion de la déconnexion

Lors de la déconnexion, le contact restera connecté au SSO. Ainsi, une nouvelle connexion déclenchera automatiquement le rappel de réussite et le contact sera automatiquement connecté. Pour déclencher une déconnexion du SSO :

GET https://<sso-domain>/contacts/sign_out

Paramètre:

redirect_url : l'URL de votre application vers laquelle les utilisateurs seront redirigés après leur déconnexion.

Avez-vous trouvé la réponse à votre question ?