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.
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.
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
- Single Sign-On : le jeton qui connecte l'utilisateur à l'application affichée
- Provisionnement de sous-domaines : mettre en ligne une application
*.inklura.fr