Intégration iframe

La console affiche ses applications sœurs (Mail, SMS, SEO…) dans des iframes pour qu'elles forment un seul produit. Deux éléments le permettent : une Content-Security-Policy commune à la plateforme qui autorise l'affichage en iframe, et le passage de session qui connecte l'utilisateur à l'application affichée.

La politique commune

La plateforme envoie la même Content-Security-Policy pour toutes les applications. Pour l'affichage en iframe, deux directives comptent :

Directive Inclut Effet
frame-src 'self', https://*.inklura.fr, https://auth.1clic.pro, plus des services tiers (paiement, vérification anti-robot, reCAPTCHA, vidéo) et quelques autres sites La console peut afficher ses applications sœurs et le fournisseur d'identité
frame-ancestors 'self', https://*.inklura.fr Chaque application peut être affichée dans une page *.inklura.fr

frame-src définit ce qu'une page peut afficher, frame-ancestors définit qui peut afficher une application donnée. Avec la politique commune, un site tiers ne peut pas afficher une application Inklura en iframe.

Note

Cette politique est définie par la plateforme, pas application par application. Une application peut envoyer sa propre politique sur certaines pages (par exemple une page prévue pour être intégrée sur un site tiers) : elle remplace alors la politique commune pour ces pages.

Astuce

Du point de vue de la politique, tout sous-domaine *.inklura.fr est déjà couvert : une application sur un sous-domaine Inklura peut être affichée par la console sans aucun réglage.

Afficher une application sœur

Ne pointez pas l'iframe directement vers la page de l'application. Pointez-la vers la route de lancement de la console, pour que l'application affichée ouvre sa session avant de s'afficher :

<iframe src="/api/manage/designer-sso?app=mail&next=/manage&embed=1"></iframe>

La route émet un jeton de courte durée et redirige vers l'application, qui ouvre sa session puis affiche la page next. Le paramètre embed=1 est transmis à l'application pour lui indiquer qu'elle est affichée dans la console. La route exige une session console : sans session, l'iframe affiche la page de connexion de la console, et une valeur app inconnue renvoie vers /manage. Voir Single Sign-On pour la liste des paramètres, la durée de validité et les garanties du jeton.

Même site ou nouvel onglet

Toutes les applications ne sont pas affichées en iframe. Quand la console lance une application :

  • les applications servies sur le domaine de la console (*.inklura.fr), comme Mail, SMS, SEO, le support et la caisse, s'affichent dans l'iframe, ce que la politique ci-dessus autorise ;
  • celles qui vivent sur un autre domaine, et quelques autres, s'ouvrent dans un nouvel onglet.

La raison tient au cookie de session : l'application ouvre sa session avec un cookie SameSite=Lax, que le navigateur n'envoie à une iframe que si elle est sur le même site que la page qui l'affiche. Une application sur un autre domaine ne peut être affichée dans la console que si elle pose, une fois en iframe, un cookie de session partitionné (CHIPS), et si la page de la console qui l'affiche autorise son origine dans frame-src.

Voir aussi