faq-fr.html 17.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
  <meta name="generator" content=
  "HTML Tidy for Linux/x86 (vers 1 September 2005), see www.w3.org" />

  <title>FAQ LEMONLDAP::NG</title>
  <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
</head>

<body>
  <div class="main-content">
    <h2 class="heading-1"><span id="HFoireauxquestionsLemonldap3A3ANG">Foire
    aux questions Lemonldap::NG</span></h2>

    <p class="paragraph"></p>

    <ul>
      <li>
        <a href="#HLemonldap3A3ANG">Lemonldap::NG</a>

        <ul>
          <li><a href="#HQu27estcequ27unWebSSO3F">Qu'est-ce qu'un Web-SSO
          ?</a></li>

          <li><a href=
          "#HQu27apporteLemonldap3A3ANGparrapportauxautresSSO3F">Qu'apporte
          Lemonldap::NG par rapport aux autres SSO ?</a></li>
        </ul>
      </li>

      <li>
        <a href="#HConfiguration">Configuration</a>

        <ul>
          <li><a href=
          "#HQuelsystC3A8medestockagedeconfigurationchoisir3F">Quel
          syst&egrave;me de stockage de configuration choisir ?</a></li>

          <li><a href=
          "#HL27exemplefournifonctionneenHTTP2CmaispasenHTTPS">L'exemple
          fourni fonctionne en HTTP, mais pas en HTTPS.</a></li>

          <li><a href=
          "#HCommentfairefonctionnerLemonldap3A3ANGavecunannuaireActiveDirectory3F">
          Comment faire fonctionner Lemonldap::NG avec un annuaire
          Active-Directory ?</a></li>
        </ul>
      </li>

      <li>
        <a href="#HFonctionnement">Fonctionnement</a>

        <ul>
          <li><a href="#HAquoisertlecachelocaldesagents28handlers293F">A quoi
          sert le cache local des agents (handlers) ?</a></li>

          <li><a href=
          "#HPourquoinepeutonpasconfigurerlecachelocaldesagents28handlers29danslaconsoled27administration3F">
          Pourquoi ne peut-on pas configurer le cache local des agents
          (handlers) dans la console d'administration ?</a></li>

          <li><a href=
          "#HQu27estcequele7E7ECrossDomainAuthentication7E7E28CDA293F">Qu'est
          ce que le <i class="italic">Cross Domain Authentication</i> (CDA)
          ?</a></li>

          <li><a href=
          "#HCommentfonctionnele7E7ECrossDomainAuthentication7E7E28CDA293F">Comment
          fonctionne le <i class="italic">Cross Domain Authentication</i>
          (CDA) ?</a></li>
        </ul>
      </li>

      <li>
        <a href="#HAuthentification">Authentification</a>

        <ul>
          <li><a href="#HPeutonchangerlemoded27authentification3F">Peut-on
          changer le mode d'authentification ?</a></li>
        </ul>
      </li>
    </ul>

    <h3 class="heading-1-1"><span id=
    "HLemonldap3A3ANG">Lemonldap::NG</span></h3>

    <h4 class="heading-1-1-1"><span id="HQu27estcequ27unWebSSO3F">Qu'est-ce
    qu'un Web-SSO ?</span></h4>

    <p class="paragraph"></p>Un SSO <i class="italic">(Single Sign On)</i> est
    un dispositif qui permet de partager les authentifications entre plusieurs
    applications. L'utilisateur ne s'authentifie ainsi qu'une fois et n'est
    pas interrompu lorsqu'il change d'application. Kerberos (utilis&eacute;
    dans Active Directory) par exemple est un SSO. Le probl&egrave;me de ces
    syst&egrave;mes est qu'outre leur lourdeur, ils ne s'appliquent
    qu'&agrave; des Intranets sur des machines relativement homog&egrave;nes.

    <p class="paragraph"></p>Le Web-SSO est le portage de ce principe
    restreint aux applications Web. L'utilisateur est donc authentifi&eacute;
    au premier acc&egrave;s &agrave; une application web
    prot&eacute;g&eacute;e et les authentifications se propagent lorsqu'il
    change d'application. Le gros avantage est alors que le syst&egrave;me est
    utilisable sur Internet sans pr&eacute;-requis sur les postes clients (il
    suffit d'accepter les cookies de session). Par exemple, lorsqu'un
    utilisateur acc&egrave;de &agrave; une bo&icirc;te-aux-lettres Google, il
    n'est pas r&eacute;authentifi&eacute; s'il acc&egrave;de &agrave;
    l'application de gestion des groupes ou tout autre application Google.

    <p class="paragraph"></p>Lemonldap::NG est un des syst&egrave;mes
    permettant la gestion du Web-SSO.

    <h4 class="heading-1-1-1"><span id=
    "HQu27apporteLemonldap3A3ANGparrapportauxautresSSO3F">Qu'apporte
    Lemonldap::NG par rapport aux autres SSO ?</span></h4>

    <ul class="star">
      <li>Lemonldap comme lemonldap::NG sont des modules Apache Perl et
      offrent des performances qui rendent imperceptible le traitement de
      l'acc&egrave;s.</li>

      <li>Un des autres points forts de Lemonldap::NG est sa capacit&eacute;
      &agrave; g&eacute;rer les droits de fa&ccedil;on centralis&eacute;e: les
      SSO type Kerberos ou CAS permettent le partage des authentifications
      mais d&eacute;l&egrave;guent aux applications la gestion des
      autorisations d'acc&egrave;s. Dans le cas de Lemonldap::NG, la gestion
      des droits peut &ecirc;tre centralis&eacute;e totalement, en partie ou
      pas du tout pour chaque application: Lemonldap::NG fournit un
      syst&egrave;me d'autorisations bas&eacute; sur le tri des URL par
      expressions r&eacute;guli&egrave;res auquelles on associe une
      r&egrave;gle. Il fournit &eacute;galement des en-t&ecirc;tes HTTP
      &agrave; l'application contenant n'importe quel attribut issue de
      l'annuaire LDAP. Celle-ci peut alors g&eacute;rer la
      tra&ccedil;abilit&eacute; des acc&egrave;s et &eacute;ventuellement des
      droits d'acc&egrave;s (voir la <span class="wikiexternallink"><a href=
      "http://wiki.lemonldap.objectweb.org/xwiki/bin/view/NG/Presentation#HMC3A9canismesd27authentification2Cd27autorisationetdetraC3A7abilitC3A9">
      documentation AAA</a></span>).</li>

      <li>Lemonldap::NG n'imose aucune modification de l'annuaire: les droits
      sont calcul&eacute;s &agrave; partir de n'importe quel attribut.</li>

      <li>Lemonldap::NG peut publier n'importe quel attribut LDAP ou des
      expressions calcul&eacute;es &agrave; partir de ces attributs dans les
      en-t&ecirc;tes HTTP. On peut ainsi &eacute;viter aux applications
      d'avoir &agrave; consulter l'annuaire LDAP.</li>

      <li>Lemonldap::NG traite tous les sites h&eacute;berg&eacute;s (virtuels
      ou r&eacute;els) ind&eacute;pendamment: on peut ainsi fournir &agrave;
      chaque application des en-t&ecirc;tes personnalis&eacute;s.</li>

      <li>Lemonldap::NG fournit une interface web d'administration
      pr&eacute;sentant simplement la configuration, les droits d'acc&egrave;s
      et les en-t&ecirc;tes par site prot&eacute;g&eacute; (voir la
      d&eacute;monstration&gt;<span class="nobr"><a href=
      "http://lemonldap.objectweb.org/NG/ManagerDemo/fr/">http://lemonldap.objectweb.org/NG/ManagerDemo/fr/</a></span>).
      On peut &eacute;galement ne montrer qu'une partie de la configuration en
      lecture seule et une autre en lecture &eacute;criture: l'interface
      d'administration peut ainsi &ecirc;tre partiellement
      d&eacute;l&eacute;gu&eacute;e par site prot&eacute;g&eacute;.</li>
    </ul>

    <h3 class="heading-1-1"><span id=
    "HConfiguration">Configuration</span></h3>

    <h4 class="heading-1-1-1"><span id=
    "HQuelsystC3A8medestockagedeconfigurationchoisir3F">Quel syst&egrave;me de
    stockage de configuration choisir ?</span></h4>

    <p class="paragraph"></p>Lemonldap::NG fournit 3 types de stockage de
    configuration:

    <ul class="star">
      <li><strong class="strong">File</strong>: le syst&egrave;me le plus
      simple, il ne permet en revanche de partager la configuration que parmi
      les serveurs qui partagent un syst&egrave;me de fichier. On peut ainsi
      l'utiliser dans le cas o&ugrave; tous les VirtualHosts &agrave;
      prot&eacute;ger se trouvent sur le m&ecirc;me serveur,</li>

      <li><strong class="strong">DBI</strong>: <span class=
      "wikiexternallink"><a href=
      "http://www.linuxmanpages.com/man3/DBI.3pm.php">DBI(3)</a></span> est
      une couche d'abstraction de l'acc&egrave;s aux bases de donn&eacute;es
      fournie par Perl. Utilis&eacute;e dans Lemonldap::NG, elle permet de
      partager la configuration entre serveurs mais suppose que tous ces
      serveurs acc&egrave;dent &agrave; la m&ecirc;me base de donn&eacute;e.
      C'est une solution recommand&eacute;e pour partager la configuration sur
      un r&eacute;seau de serveurs,</li>

      <li><strong class="strong">SOAP</strong>: Ce syst&egrave;me n'est pas
      &agrave; proprement parler un syst&egrave;me de stockage, mais permet
      &agrave; un serveur distant d'acc&eacute;der &agrave; la configuration
      par une simple connexion HTTP(S). Le serveur SOAP acc&egrave;de lui
      &agrave; la configuration par un des syst&egrave;mes
      pr&eacute;c&eacute;dents (File ou DBI).</li>
    </ul>

    <h4 class="heading-1-1-1"><span id=
    "HL27exemplefournifonctionneenHTTP2CmaispasenHTTPS">L'exemple fourni
    fonctionne en HTTP, mais pas en HTTPS.</span></h4>

    <p class="paragraph"></p>Dans le m&eacute;canisme des redirections vers le
    portail puis vers le site prot&eacute;g&eacute;, il faut indiquer &agrave;
    l'agent (handler) s'il est de type HTTPS ou non. Ceci est fait par le
    param&egrave;tre <tt>https</tt> qui doit &ecirc;tre mis &agrave; 1. Ce
    param&egrave;tre n'est pas accessible dans la configuration (manager), car
    il est sp&eacute;cifique aux h&ocirc;tes virtuels. C'est donc lors de
    l'appel &agrave; la fonction <tt>init</tt> (dans le fichier My::Package)
    qu'il doit &ecirc;tre renseign&eacute;:

    <p class="paragraph"></p>
    <pre>
__PACKAGE__-&gt;init ( {
    localStorage        =&gt; "Cache::FileCache",
    localStorageOptions =&gt; {
              'namespace'          =&gt; 'MyNamespace',
              'default_expires_in' =&gt; 600,
              'directory_umask'    =&gt; '007',
              'cache_root'         =&gt; '/tmp',
              'cache_depth'        =&gt; 5,
    },
    configStorage       =&gt; {
              type                 =&gt; 'File',
              dirName              =&gt; '/var/lib/lemonldap-ng/conf',
    },
    <strong class="strong">https               =&gt; 1</strong>,
} );
</pre>

    <h4 class="heading-1-1-1"><span id=
    "HCommentfairefonctionnerLemonldap3A3ANGavecunannuaireActiveDirectory3F">Comment
    faire fonctionner Lemonldap::NG avec un annuaire Active-Directory
    ?</span></h4>

    <p class="paragraph"></p>Active-Directory utilise le champ <tt>cn</tt>
    comme identifiant unique au lieu de <tt>uid</tt>. Il faut donc modifier la
    configuration de Lemonldap::NG en deux points&nbsp;:

    <ol>
      <li>la recherche de l'utilisateur dans l'annuaire doit &ecirc;tre
      effectu&eacute;e avec le champ <tt>cn</tt> (ou
      <tt>samAccountName</tt>),</li>

      <li>les journaux d'Apache doivent &ecirc;tre enrichis avec ce m&ecirc;me
      champ.</li>
    </ol>Pour le deuxi&egrave;me point, la modification est tr&egrave;s simple
    : il faut remplacer <tt>$uid</tt> par <tt>$cn</tt> dans le champ
    "Param&egrave;tres g&eacute;n&eacute;raux -&gt; Donn&eacute;e &agrave;
    inscrire dans les journaux d'Apache (et v&eacute;rifier que cette variable
    est d&eacute;clar&eacute;e dand les attributs &agrave; exporter). Le
    changement de filtre de recherche n&eacute;cessite la surcharge d'une
    m&eacute;thode dans le portail. Cette modification peut &ecirc;tre
    effectu&eacute;e comme suit:
    <pre>
#!/usr/bin/perl
use Lemonldap::NG::Portal::SharedConf;
my $portal = Lemonldap::NG::Portal::SharedConf-&gt;new(
    {
        configStorage =&gt; {
            type    =&gt; 'File',
            dirName =&gt; '/var/lib/lemonldap-ng/conf',
        },
        <strong class="strong">formateFilter =&gt; sub {</strong>
            my $self = shift;
            $self-&gt;{filter} = "(&amp;(cn=" . $self-&gt;{user} . ")(objectClass=person))";
            PE_OK;
        } # fin de la surcharge
    }
);
</pre>

    <h3 class="heading-1-1"><span id=
    "HFonctionnement">Fonctionnement</span></h3>

    <h4 class="heading-1-1-1"><span id=
    "HAquoisertlecachelocaldesagents28handlers293F">A quoi sert le cache local
    des agents (handlers) ?</span></h4>

    <p class="paragraph"></p>Le cache local des agents a deux fonctions:

    <ul class="star">
      <li>partager la configuration entre processus Apache: on &eacute;vite
      ainsi un t&eacute;l&eacute;chargement de la configuration &agrave;
      chaque cr&eacute;ation d'un processus. C'est &eacute;galement
      indispensable pour utiliser le m&eacute;canisme de rechargement de la
      configuration sans relance du serveur Apache,</li>

      <li>partager les sessions en cours entre processus et threads Apache:
      ceci permet d'&eacute;viter d'avoir &agrave; effectuer une requ&ecirc;te
      au magasin central des sessions &agrave; chaque requ&ecirc;te (on ne
      retombe en effet pas n&eacute;cessairement sur le m&ecirc;me processus).
      Dans le cas o&ugrave; le cache central des sessions est accessible par
      le r&eacute;seau, on transforme ainsi une requ&ecirc;te TCP en une
      requ&ecirc;te au syst&egrave;me de ficher voir simplement &agrave; la
      m&eacute;moire partag&eacute;e ce qui augmente fortement les
      performances.</li>
    </ul>

    <h4 class="heading-1-1-1"><span id=
    "HPourquoinepeutonpasconfigurerlecachelocaldesagents28handlers29danslaconsoled27administration3F">
    Pourquoi ne peut-on pas configurer le cache local des agents (handlers)
    dans la console d'administration ?</span></h4>

    <p class="paragraph"></p>Le cache local doit &ecirc;tre choisi ou
    param&eacute;tr&eacute; en fonction du serveur: si on choisit par exemple
    le module Cache::FileCache, le r&eacute;pertoire de stockage n'est pas
    n&eacute;cessairement le m&ecirc;me partout. De plus, une modification du
    cache ne peut &ecirc;tre appliqu&eacute;e sans red&eacute;marrage du
    serveur Apache contrairement aux autres param&egrave;tres
    g&eacute;r&eacute;s par la console d'administration.

    <h4 class="heading-1-1-1"><span id=
    "HQu27estcequele7E7ECrossDomainAuthentication7E7E28CDA293F">Qu'est ce que
    le <i class="italic">Cross Domain Authentication</i> (CDA) ?</span></h4>

    <p class="paragraph"></p>Le syst&egrave;me de propagation de la session
    Lemonldap::NG est bas&eacute; sur des cookies. Or ces cookies sont
    attach&eacute;s au domaine dont ils sont issus. Lemonldap::NG fournit un
    dispositif permettant de passer outre ce probl&egrave;me: il suffit
    d'utiliser le portail Lemonldap::NG::Portal::CDA et les agents
    Lemonldap::NG::Handler::CDA sur les sites prot&eacute;g&eacute;s en dehors
    du domaine du portail.

    <h4 class="heading-1-1-1"><span id=
    "HCommentfonctionnele7E7ECrossDomainAuthentication7E7E28CDA293F">Comment
    fonctionne le <i class="italic">Cross Domain Authentication</i> (CDA)
    ?</span></h4>

    <p class="paragraph"></p>Un portail Lemonldap::NG::Portal::CDA
    d&eacute;tecte si l'URL demand&eacute;e n'est pas dans le m&ecirc;me
    domaine. Si c'est le cas, il ajoute un param&egrave;tre &agrave; cette
    requ&ecirc;te correspondant au cookie de session. Lorsque l'utilisateur
    est renvoy&eacute; vers cette URL, l'agent Lemonldap::NG::Handler::CDA
    reconna&icirc;t ce param&egrave;tre et g&eacute;n&egrave;re alors le
    cookie dans son domaine. Il retire alors le param&egrave;tre ajout&eacute;
    par le portail et effectue le traitement normal de la requ&ecirc;te.

    <h3 class="heading-1-1"><span id=
    "HAuthentification">Authentification</span></h3>

    <h4 class="heading-1-1-1"><span id=
    "HPeutonchangerlemoded27authentification3F">Peut-on changer le mode
    d'authentification ?</span></h4>

    <p class="paragraph"></p>Lemonldap::NG fournit plusieurs modes
    d'authentification (&agrave; param&eacute;trer dans le champ
    "authentification" de l'interface d'administration) :

    <ul class="star">
      <li><strong class="strong">ldap</strong> : c'est le mode par
      d&eacute;faut: le portail tente de se connecter avec les
      &eacute;l&eacute;ments fournis par l'utilisateur</li>

      <li><strong class="strong">CAS</strong> : le portail Lemonldap::NG
      devient alors un simple relais CAS: si l'utilisateur n'est pas
      authentifi&eacute;, on le revoie vers le portail CAS</li>

      <li><strong class="strong">SSL</strong> : ce dispositif confie &agrave;
      Apache le soin d'authentifier les utilisateurs par m&eacute;canisme SSL.
      Ce dispositif est tr&egrave;s int&eacute;ressant lorsqu'on utilise des
      certificats SSL: si on prot&egrave;ge toutes les applications par
      certificats mutuels les nombreuses n&eacute;gociations SSL
      p&eacute;naliserons les performances et en cas d'emploi de cartes
      &agrave; puces prot&eacute;geant chaque op&eacute;ration, l'utilisateur
      devra saisir plusieurs fois son code. Avec ce dispositif, seule
      l'acc&egrave;s au portail Lemonldap::NG n&eacute;cessite la
      pr&eacute;sentation du certificat client. Ensuite, c'est le cookie
      s&eacute;curis&eacute; qui assure la propagation de
      l'authentification.</li>

      <li><strong class="strong">Apache</strong> : dans le m&ecirc;me esprit,
      on confie &agrave; Apache l'authentification. Par exemple avec Kerberos,
      le module Kerberos d'Apache assure la protection du portail. On
      am&eacute;liore ainsi les performances puisqu'une seule
      n&eacute;gociation Kerberos est n&eacute;cessaire pour toute la
      session.</li>
    </ul>
  </div>
</body>
</html>