Bonjour, Dans le cadre du déploiement d'OBM en environnement SSO, j'ai participé à l'élaboration du connecteur LemonLDAP::NG dans OBM (http://lemonldap.ow2.org). Cette fonctionnalité est maintenant proposé depuis la version 2.2.5. Cependant, elle souffre encore de bugs que j'ai déjà soulevés et corrigés:
https://www.obm.org/bugzilla/show_bug.cgi?id=607 https://www.obm.org/bugzilla/show_bug.cgi?id=612 https://www.obm.org/bugzilla/show_bug.cgi?id=614 https://www.obm.org/bugzilla/show_bug.cgi?id=647 +1 patch de mise à jour pour soulager un peu les synchronisations entre OBM et son annuaire, à venir. +1 second patch pour éviter de lancer l'automate en global et ne gérer que de l'incrémental. Alors, pour rappel, cette fonctionnalité permet pour le moment: - L'utilisateur s'authentifie sur le portail SSO LemonLDAP::NG, qui s'appuie sur l'annuaire d'entreprise tiers ; - Authentification SSO sur OBM ; - Auto-création à la connexion de compte utilisateur OBM depuis les infos de l'annuaire tiers ; - Synchronisation des informations utilisateurs entre l'annuaire tiers et OBM ; - Synchronisation des mots de passe entre l'annuaire tiers et OBM ; - Synchronisation des comptes utilisateurs entre OBM et l'annuaire LDAP OBM (pas d'intervention manuelle). - Possibilité de mapper les attributs LDAP de l'annuaire tiers sur les informations utilisateurs d'OBM; Comme ça manque cruellement d'informations, j'ai réalisé rapidement un tutoriel de mise en place à partir d'un système Debian fraichement installé. Je suppose qu'OBM est déjà patché avec les derniers correctifs. Peut-être que ce document souffre encore de quelques manques, mais c'est une première version. Le document est en pièce jointe. L'objectif est de proposer ce document sur le wiki d'OBM.org, avec mise en forme et plus d'explications je pense. A votre avis ? Bonne après-midi, -- Thomas Chemineau
OBM 2.2.10+ / LemonLDAP-NG 0.9.4+ / Debian Lenny ================================================================================ Definition ================================================================================ URL Portail SSO: sso.example.com URL OBM: obm.example.com Domaine OBM: example.com ================================================================================ LemonLDAP::NG ================================================================================ aptitude -y install apache2 a2enmod ssl rewrite aptitude -y install libxml-simple-perl libjs-jquery libapache-session-perl \ libnet-ldap-perl libhtml-template-perl libjs-jquery libxml-libxml-perl \ libxml-libxslt-perl libstring-random-perl libapache-session-perl libwww-perl \ libcache-cache-perl libapache2-mod-perl2 liburi-perl libdbi-perl \ libcache-cache-perl libregexp-assemble-perl libcrypt-rijndael-perl wget wget http://download.forge.objectweb.org/lemonldap/lemonldap-ng-0.9.4_debian.deb.tar.gz tar zxf lemonldap-ng-0.9.4_debian.deb.tar.gz dpkg -i liblemonldap-ng-conf-perl_0.9.4-1_all.deb \ liblemonldap-ng-handler-perl_0.9.4-1_all.deb \ liblemonldap-ng-manager-perl_0.9.4-1_all.deb \ liblemonldap-ng-portal-perl_0.9.4-1_all.deb \ lemonldap-ng-doc_0.9.4-1_all.deb lemonldap-ng_0.9.4-1_all.deb /etc/init.d/apache2 restart Créer le fichier /etc/lemonldap-ng/init-apache2.conf: 8<-------- # Perl environment PerlRequire /var/lib/lemonldap-ng/handler/MyHandler.pm PerlOptions +GlobalRequest <Files ~ "\.(pl)$"> SetHandler perl-script PerlHandler ModPerl::Registry PerlSendHeader On </Files> 8<-------- Créer les liens symboliques: ln -s /etc/lemonldap-ng/init-apache2.conf /etc/apache2/conf.d/lemonldap-ng.conf ln -s /etc/lemonldap-ng/portal-apache2.conf /etc/apache2/sites-enabled/001-lemonldap-ng-portal ln -s /etc/lemonldap-ng/manager-apache2.conf /etc/apache2/sites-enabled/002-lemonldap-ng-manager Editer le fichier /etc/lemonldap-ng/apply.conf et ajouter la ligne suivante: 8<-------- obm.example.com http://obm.example.com/reload 8<-------- Editer le fichier /etc/lemonldap-ng/apps-list.xml et ajouter les lignes suivantes dans la catégorie "Example": 8<-------- <application id="obm"> <name>OBM</name> <uri>http://obm.example.com/</uri> <description>Access to OBM</description> <logo>wheels.png</logo> <display>auto</display> </application> 8<-------- Ensuite, renommer les hôtes virtuel d'administration: sed -i 's/manager.example.com/manager.sso.example.com/g' /etc/lemonldap-ng/manager-apache2.conf sed -i 's/auth.example.com/sso.example.com/g' /etc/lemonldap-ng/portal-apache2.conf sed -i 's/<VirtualHost \*>/<VirtualHost \*:80>/g' /etc/lemonldap-ng/portal-apache2.conf /etc/lemonldap-ng/manager-apache2.conf Ajuster la configuration dans /etc/lemonldap-ng/manager-apache2.conf: 8<-------- <Directory /var/lib/lemonldap-ng/manager> Order deny,allow Allow from All Options +ExecCGI </Directory> 8<-------- Et commenter la ligne suivante dans /etc/lemonldap-ng/portal-apache2.conf: 8<-------- # require SOAP::Lite; 8<-------- Activer le stockage des mots de passe en session dans le fichier /var/lib/lemonldap-ng/portal/index.pl: 8<-------- storePassword => 1, 8<-------- Redémarrer le serveur Apache: /etc/init.d/apache2 restart Aller sur le manager de LemonLDAP, et configurer les paramètres d'authentication Type d'authentification: ldap Portail d'authentification: http://sso.example.com Domaine: example.com Puis ajuster les paramètres LDAP (DN, mot de passe, etc...). Par exemple: Base de recherche LDAP => ou=people,dc=example,dc=com Port du serveur LDAP => 389 Serveur LDAP => 192.168.0.1 Compte de connexion LDAP => cn=manager,dc=example,dc=com Mot de passe LDAP => secret Ajouter les attributs à exporter suivants: c => c facSimileTelephoneNumber => facSimileTelephoneNumber givenName => givenName l => l mail => mail mailQuota => mailQuota postalCode => postalCode serialNumber => serialNumber sn => sn telephoneNumber => telephoneNumber uid => uid Ensuite, créer un hôte virtuel nommé "obm.example.com", et créer les entêtes suivantes: OBM_C => $c OBM_FACSIMILETELEPHONENUMBER => $facSimileTelephoneNumber OBM_GIVENNAME => $givenName OBM_GROUPS => $groups OBM_L => $l OBM_MAIL => $mail OBM_MAILQUOTA => $mailQuota OBM_POSTALCODE => $postalCode OBM_SERIALNUMBER => serialNumber OBM_SN => $sn OBM_TELEPHONENUMBER => $telephoneNumber OBM_UID => $uid OBM_USERPASSWORD => $_password Vous pouvez fixer en dur le mail de l'utilisateur dans OBM, et ensuite les ajuster dans l'annuaire LDAP plus tard: OBM_MAIL => "[email protected]" Les variables obligatoirement non vide sont: OBM_UID, OBM_USERPASSWORD, OBM_SN et OBM_MAIL. Puis configurer les règles de cet hôte virtuel: ^/logout => logout_sso http://sso.example.com default => allow Enregistrer la configuration. Ensuite, vous pouvez sécuriser l'interface d'administration, via une authentification LDAP par exemple: 8<-------- <Directory /var/lib/lemonldap-ng/manager> Order deny,allow Allow from All Options +ExecCGI AuthType Basic AuthName "LemonLDAP::NG manager interface" AuthBasicProvider ldap AuthzUserAuthoritative On AuthzLDAPAuthoritative Off AuthLDAPBindDN cn=manager,dc=example,dc=com AuthLDAPBindPassword secret AuthLDAPURL ldap://127.0.0.1:389/ou=accounts,ou=system,dc=example,dc=com?uid?one?(objectClass=person) Require valid-user </Directory> 8<-------- Attention à activer les modules d'authentification LDAP dans Apache. Finalement, pour la nouvelle configuration de LemonLDAP::NG soient prise en compte, redémarrer le serveur Apache: /etc/init.d/apache2 restart ================================================================================ OBM ================================================================================ Editer le fichier /etc/apt/sources.list.d/obm.list : 8<-------- deb http://deb.obm.org stable obm deb http://deb.obm.org oldstable obm 8<-------- wget -q http://deb.obm.org/obmgpg.pub -O - | apt-key add - aptitude update aptitude -y install obm cp /usr/share/doc/obm-ui/apache-virtualhost_obm.conf.sample /etc/apache2/sites-available/obm ln -s /etc/apache2/sites-available/obm /etc/apache2/sites-enabled/003-obm Puis compléter le fichier /etc/apache2/sites-available/obm, pour inclure les règles de réécriture à la fin de ce fichier dans un hôte virtuel: 8<-------- <virtualhost *:80> servername obm.example.com <IfModule mod_rewrite.c> <IfModule mod_ssl.c> RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L] </IfModule> </IfModule> </virtualhost> 8<-------- Maintenant, il faut se connecter à l'interface d'OBM et créer tout ce qu'il faut. Par défaut, c'est le domaine "example.com" qui est utiliser dans ce document. Une fois la configuration terminée, editer le fichier /etc/apache2/sites-available/obm et inclure les directives suivantes dans l'hôte virtuel SSL d'OBM: 8<-------- # SSO protection PerlHeaderParserHandler My::Package # Configuration reload mechanism (only 1 per physical server is # needed): choose your URL to avoid restarting Apache when # configuration change <Location /reload> Order deny,allow Deny from all Allow from 127.0.0.0/8 PerlHeaderParserHandler My::Package->refresh </Location> 8<-------- Indiquer que certains points d'accès n'ont pas besoin de SSO: 8<-------- #obm#<Location /funambol> #obm#ProxyPass ajp://_TOMCAT_SERVER_:8009/funambol #obm#PerlHeaderParserHandler My::Package->unprotect #obm#</Location> #obm#<Location /obm-sync> #obm#ProxyPass ajp://_TOMCAT_SERVER_:8009/obm-sync #obm#PerlHeaderParserHandler My::Package->unprotect #obm#</Location> #obm#<Location /minig> #obm#ProxyPass ajp://_TOMCAT_SERVER_:8009/minig #obm#PerlHeaderParserHandler My::Package->unprotect #obm#</Location> #<Location /webmail/images> #ProxyPass ajp://_TOMCAT_SERVER_Minig:8009/minig/images #PerlHeaderParserHandler My::Package->unprotect #</Location> 8<-------- Et fixer le nom de l'hôte virtuel dans : 8<-------- servername obm.example.com 8<-------- On suppose que le serveur ne dipose que d'OBM, il faut forcer la redirection HTTPS dans le handler. Editer le fichier /var/lib/lemonldap-ng/handler/MyHandler.pm: 8<-------- https => 1, 8<-------- Editer ensuite le fichier /etc/obm/obm_conf.inc, et configurer les directives suivantes: $auth_kind = 'LemonLDAP'; "auto_update" => true, "url_logout" => "http://sso.example.com/logout", OBM attends les entêtes HTTP déclarées dans LemonLDAP::NG, plusieurs d'entre elles sont obligatoires: OBM_UID, OBM_USERPASSWORD, OBM_SN et OBM_MAIL.
_______________________________________________ Obm mailing list [email protected] http://www.list.aliasource.fr/mailman/listinfo/obm
