cross_domain_auth.md 2.0 KB

Objectif

Permettre à un site dont le nom de domaine n'est pas en ***.opentalent.fr de s'authentifier auprès de l'API opentalent.

Problème

Les navigateurs restreignent les cookies à un seul nom de domaine.

Les cookies générés par l'authentif auprès de l'api sont donc invisibles pour le site mondomaine.com

Reproduire le problème

Pour tester les solutions, il va falloir simuler un domaine différent.

Je créé l'entrée suivante dans mon /etc/hosts:

127.0.0.1 local.sub.mydomain.fr

Je me connecte au docker nginx-proxy, et je remplace les domaines dans la conf de nginx:

sed -i 's/local\.sub\.opentalent\.fr/local.sub.mydomain.fr/g' /etc/nginx/default.conf
nginx -s reload

Je me rend à l'adresse local.admin.opentalent.fr/#/login

Je m'authentifie en tant que opentalent74

Je me rend à l'adresse http://local.sub.mydomain.fr/ohcluses

Je ne suis pas connecté.

Je reviens à l'url standard:

Je me connecte au docker nginx-proxy, et je remplace les domaines dans la conf de nginx:

sed -i 's/local\.sub\.mydomain\.fr/local.sub.opentalent.fr/g' /etc/nginx/default.conf
nginx -s reload

Solutions envisagées

Lors d'une connexion réussie, l'API enverra une requête POST aux sites ayant des domaines custom et pour lesquelles le user a un Access

Un controller dédié côté Typo3 (ex: setCookies.php) génèrera ensuite les cookies avec les noms de domaines correspondant.

Etapes:

  1. Le nom de domaine custom doit être stocké dans le champs Parameters.website:
  2. vérifier le contenu actuel
  3. reprise des custom_domains dans typo
  4. automatiser le tout
  5. Créer un script setCookie dans OtConnect qui recevrait les requêtes post provenant de l'API
  6. Ajouter un hook lors du apiSuccess de l'api pour envoyer la requête post

La requête envoyée à setCookie doit contenir simplement le BEARER du user nouvellement authentifié.

Le fichier setCookie.fr doit générer un cookie correspondant à ce bearer et le renvoyer