Le rejeu de formulaire permet d'ouvrir une session dans une application protégée par un formulaire POST sans rien demander à l'utilisateur.
</p>
<divclass="notewarning">Ce type de mécanisme <abbrtitle="Authentification unique (Single Sign On)">SSO</abbr> n'est pas parfait et peut générer des problèmes tels des blocages de mots-de-passe, sessions locales mal closes, etc...
<p>
Il est en général préférable de trouver une autre solution pour protéger les applications avec <abbrtitle="LemonLDAP::NG">LL::NG</abbr>. Ainsi, vérifier si l'<ahref="applications.html"class="wikilink1"title="documentation:2.0:applications">application est connue</a> ou <ahref="selfmadeapplication.html"class="wikilink1"title="documentation:2.0:selfmadeapplication">essayer d'adapter le code source</a>.
</p>
</div>
<p>
En configurant le rejeu de formulaire avec <abbrtitle="LemonLDAP::NG">LL::NG</abbr>, le handler détecte les formulaires à remplir, ajoute un petit javascript dans la page HTML pour préparer les champs avec de fausses données et les soumettre, le handler intercepte la requête POST et insère les bonnes données dans le corps de la requête.
</p>
<p>
Les données postées peuvent être des valeurs statiques ou calculées à partir des données de session de l'utilisateur.
</p>
<divclass="notetip">Pour envoyer le mot-de-passe utilisateur, il faut activer le <ahref="passwordstore.html"class="wikilink1"title="documentation:2.0:passwordstore">stockage du mot-de-passe</a>. Dans ce cas, la variable <code>$_password</code> peut être utilisée dans tous les champs à envoyer.
<liclass="level1"><divclass="li"> L'<abbrtitle="Uniform Resource Identifier">URI</abbr> de la page qui contient le formulaire</div>
</li>
<liclass="level1"><divclass="li"> L'<abbrtitle="Uniform Resource Identifier">URI</abbr> vers laquelle le formulaire est envoyé</div>
</li>
<liclass="level1"><divclass="li"> La page charge-elle jQuery ? Sinon, indiquer une <abbrtitle="Uniform Resource Locator">URL</abbr> jQuery joignable par l'utilisateur (toute version supérieure à 1.0)</div>
</li>
<liclass="level1"><divclass="li"> y-a-t-il pluseurs formulaires HTML dans la page ? Si oui, donner un sélecteur à jQuery identifiant le bon formulaire</div>
</li>
<liclass="level1"><divclass="li"> l'utilsiateur doit-il cliquer sur un bouton, par exemple pour déclencher un script ? Si oui, donner un sélecteur à jQuery pour identifier ce bouton</div>
</li>
<liclass="level1"><divclass="li"> noms and valeurs des champs à contrôler</div>
</li>
</ul>
<p>
Si vous ne connaissez pas les sélecteurs jQuery, sachez juste qu'ils sont similaires aux sélecteurs CSS : par exemple, button#foo pointe sur le bouton dont l'« id » est « foo », and « .bar » identifie tous les éléments HTML de la classe “bar”.
</p>
<p>
Par exemple :
</p>
<ul>
<liclass="level1"><divclass="li"><abbrtitle="Uniform Resource Identifier">URI</abbr> de la page de formulaire : /login.php</div>
</li>
<liclass="level1"><divclass="li"><abbrtitle="Uniform Resource Identifier">URI</abbr> cible : /process.php (en laissant ce paramètre vide, l'<abbrtitle="Uniform Resource Identifier">URI</abbr> cible est supposée être la même que celle du formulaire)</div>
</li>
<liclass="level1"><divclass="li"><abbrtitle="Uniform Resource Locator">URL</abbr> jQuery : http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js (si ce paramètre est vide, jQuery est supposé être déjà chargé ; on peut aussi mettre <code>default</code> pour pointer vers l'<abbrtitle="Uniform Resource Locator">URL</abbr> jQuery du portail <abbrtitle="LemonLDAP::NG">LL::NG</abbr>)</div>
</li>
<liclass="level1"><divclass="li"> Sélecteur de formulaire jQuery : #loginForm (si vide, le navigateur prendra un formulaire de la page)</div>
</li>
<liclass="level1"><divclass="li"> Sélecteur du bouton jQuery : button.validate (si vide, le formulaire sera soumis sans éulation d'un clic de bouton ; si mis à “none”, aucun clic ne sera émulé et le formulaire sera renseigné mais pas soumis)</div>