lemonldap-ng/po-doc/fr/pages/documentation/current/formreplay.html
Xavier Guimard 43fbe42b7e Update doc
2017-02-22 12:41:23 +00:00

166 lines
8.4 KiB
HTML

<!DOCTYPE html>
<html lang="fr" dir="ltr">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="utf-8" />
<title>documentation:2.0:formreplay</title><!-- //if:usedebianlibs
<link rel="stylesheet" type="text/css" href="/javascript/bootstrap/css/bootstrap.min.css" />
//elsif:useexternallibs
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"></script>
//elsif:cssminified
<link rel="stylesheet" type="text/css" href="/static/bwr/bootstrap/dist/css/bootstrap.min.css" />
//else --><!-- //endif -->
<meta name="generator" content="DokuWiki"/>
<meta name="robots" content="index,follow"/>
<meta name="keywords" content="documentation,2.0,formreplay"/>
<link rel="search" type="application/opensearchdescription+xml" href="lib/exe/opensearch.html" title="LemonLDAP::NG"/>
<link rel="start" href="formreplay.html"/>
<link rel="contents" href="formreplay.html" title="Sitemap"/>
<link rel="stylesheet" type="text/css" href="lib/exe/css.php.t.bootstrap3.css"/>
<link rel="stylesheet" type="text/css" href="/static/bwr/bootstrap/dist/css/bootstrap.css" />
<script type="text/javascript">/*<![CDATA[*/var NS='documentation:2.0';var JSINFO = {"id":"documentation:2.0:formreplay","namespace":"documentation:2.0"};
/*!]]>*/</script>
<script type="text/javascript" charset="utf-8" src="lib/exe/js.php.t.bootstrap3.js"></script><!-- //if:usedebianlibs
<script type="text/javascript" src="/javascript/jquery/jquery.min.js"></script>
//elsif:useexternallibs
<script type="text/javascript" src="http://code.jquery.com/jquery-2.2.0.min.js"></script>
//elsif:jsminified
<script type="text/javascript" src="/static/bwr/jquery/dist/jquery.min.js"></script>
//else -->
<script type="text/javascript" src="/static/bwr/jquery/dist/jquery.js"></script><!-- //endif --><!-- //if:usedebianlibs
<script type="text/javascript" src="/javascript/jquery-ui/jquery-ui.min.js"></script>
//elsif:useexternallibs
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.4/jquery-ui.min.js"></script>
//elsif:jsminified
<script type="text/javascript" src="/lib/scripts/jquery-ui.min.js"></script>
//else -->
<script type="text/javascript" src="/lib/scripts/jquery-ui.js"></script><!-- //endif -->
</head>
<body>
<div class="dokuwiki export container">
<h1 class="sectionedit1" id="form_replay">Rejeu de formulaires</h1>
<div class="level1">
</div><!-- EDIT1 SECTION "Form replay" [1-27] -->
<h2 class="sectionedit2" id="presentation">Présentation</h2>
<div class="level2">
<p>
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>
<div class="notewarning">Ce type de mécanisme <abbr title="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 <abbr title="LemonLDAP::NG">LL::NG</abbr>. Ainsi, vérifier si l'<a href="applications.html" class="wikilink1" title="documentation:2.0:applications">application est connue</a> ou <a href="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 <abbr title="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>
<div class="notetip">Pour envoyer le mot-de-passe utilisateur, il faut activer le <a href="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.
</div>
</div><!-- EDIT2 SECTION "Presentation" [28-1068] -->
<h2 class="sectionedit3" id="configuration">Configuration</h2>
<div class="level2">
<p>
You should grab some information:
</p>
<ul>
<li class="level1"><div class="li"> L'<abbr title="Uniform Resource Identifier">URI</abbr> de la page qui contient le formulaire</div>
</li>
<li class="level1"><div class="li"> L'<abbr title="Uniform Resource Identifier">URI</abbr> vers laquelle le formulaire est envoyé</div>
</li>
<li class="level1"><div class="li"> La page charge-elle jQuery ? Sinon, indiquer une <abbr title="Uniform Resource Locator">URL</abbr> jQuery joignable par l'utilisateur (toute version supérieure à 1.0)</div>
</li>
<li class="level1"><div class="li"> y-a-t-il pluseurs formulaires HTML dans la page ? Si oui, donner un sélecteur à jQuery identifiant le bon formulaire</div>
</li>
<li class="level1"><div class="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>
<li class="level1"><div class="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>
<li class="level1"><div class="li"> <abbr title="Uniform Resource Identifier">URI</abbr> de la page de formulaire : /login.php</div>
</li>
<li class="level1"><div class="li"> <abbr title="Uniform Resource Identifier">URI</abbr> cible : /process.php (en laissant ce paramètre vide, l'<abbr title="Uniform Resource Identifier">URI</abbr> cible est supposée être la même que celle du formulaire)</div>
</li>
<li class="level1"><div class="li"> <abbr title="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'<abbr title="Uniform Resource Locator">URL</abbr> jQuery du portail <abbr title="LemonLDAP::NG">LL::NG</abbr>)</div>
</li>
<li class="level1"><div class="li"> Sélecteur de formulaire jQuery : #loginForm (si vide, le navigateur prendra un formulaire de la page)</div>
</li>
<li class="level1"><div class="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>
</li>
<li class="level1"><div class="li"> Champs :</div>
<ul>
<li class="level2"><div class="li"> postuid: $uid</div>
</li>
<li class="level2"><div class="li"> postmail: $mail</div>
</li>
<li class="level2"><div class="li"> poststatic: 'static'</div>
</li>
</ul>
</li>
</ul>
<p>
Aller dans le manager, “Hôtes virtuels” » <em>virtualhost</em> » “Rejeu de formulaires” et cliquer sur “Nouveau rejeu”.
</p>
<p>
<img src="documentation/manager-form-replay.png" class="mediacenter" alt="" />
</p>
<p>
Renseigner les valeurs ici :
</p>
<ul>
<li class="level1"><div class="li"> <strong><abbr title="Uniform Resource Locator">URL</abbr> du formulaire</strong>: /login.php</div>
</li>
<li class="level1"><div class="li"> <strong><abbr title="Uniform Resource Locator">URL</abbr> cible</strong> : /process.php</div>
</li>
<li class="level1"><div class="li"> <strong><abbr title="Uniform Resource Locator">URL</abbr> jQuery</strong> : http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js</div>
</li>
<li class="level1"><div class="li"> <strong>Sélecteur de formulaire jQuery</strong> : #loginForm</div>
</li>
<li class="level1"><div class="li"> <strong>Sélecteur de bouton jQuery</strong> : button.validate</div>
</li>
</ul>
<p>
Cliquer ensuite sur <code>Nouvelle variable</code> et ajouter toutes les noms de champ et leurs valeurs, par exemple:
</p>
<p>
<img src="documentation/manager-form-replay-vars.png" class="mediacenter" alt="" />
</p>
<div class="notetip">Il est possible de définir plusieurs <abbr title="Uniform Resource Locator">URL</abbr> de rejeu de formulaires par hôte virtuel.
</div>
</div><!-- EDIT3 SECTION "Configuration" [1069-] -->
</div>
</body>
</html>