Guides pratiques

URL de retour

Quand une demande est lancée sur l’appareil même où se trouve l’ExcelID de l’utilisateur (avec l’autoStartToken), l’application ExcelID peut ramener l’utilisateur vers votre service une fois la demande terminée. Elle utilise pour cela la returnUrl que vous avez envoyée à la création de la demande.

Pourquoi l’utiliser

Utiliser returnUrl rend votre service plus sûr : l’adresse de retour fait partie de la demande et ne peut pas être modifiée dans le lien de lancement. Elle renforce le lien entre votre service et l’utilisateur (« channel binding »).

Comment l’envoyer

Ajoutez la returnUrl dans l’appel à /auth ou /sign. Elle doit :

{
  "endUserIp": "196.28.245.10",
  "returnUrl": "https://monservice.example/auth/connexion#nonce=a3618c72-bc71-4002-b3de-509555b175db",
  "userVisibleData": "Q29ubmV4aW9uIMOgIE1vbiBTZXJ2aWNl"
}

Ce que vous devez vérifier au retour

  1. Le nonce de l’adresse est bien celui de cette session de navigateur. Sinon, quelqu’un a envoyé un lien à la personne : refusez.
  2. Le cookie de session et l’adresse IP de l’utilisateur n’ont pas changé entre la page de départ et la page de retour.
  3. Votre backend a vérifié, avec /collect, que la demande est terminée avec succès, et que l’appareil qui reçoit la returnUrl est celui qui l’a lancée.
const nonce = crypto.randomBytes(16).toString('hex');
req.session.nonce = nonce;
const order = await excelid('/v1/auth', {
  endUserIp: req.ip,
  userVisibleData: b64('Connexion à Mon Service'),
  returnUrl: `https://monservice.example/auth/connexion#nonce=${nonce}`,
});

Cas particuliers