~funderscoreblog cgit wikiget in touch

MoinMoin : fonctionnement de l'authentification

Historiquement, l'authentification des utilisateurs de MoinMoin est réalisée à l'aide des cookies : lorsque vous vous identifiez, MoinMoin définit un cookie et l'utilise pour vous authentifier — jusqu'à ce que vous vous déconnectiez et que le cookie soit effacé (ou jusqu'à son expiration).

Lorsque MoinMoin est utilisé en environnement professionnel, cette solution n'est en général pas adaptée, car le respect des restrictions d'accès doit être assuré. Depuis la version 1.3, lorsqu'il est utilisé avec certains serveurs web compatibles (comme Apache), MoinMoin peut aussi utiliser l'authentification HTTP de base.

Depuis la version 1.2, MoinMoin dispose d'un système d'authentification librement configurable et offrant une certaine modularité. L'option de paramétrage auth permet de définir la liste des méthodes d'authentification utilisées et leur ordre d'application.

Lorsque vous utilisez une base de données externes d'utilisateurs, vous n'avez pas besoin de créer à la main tous les comptes utilisateurs. En effet, depuis la version 1.5 de MoinMoin, il est possible d'utiliser l'option de paramétrage user_autocreate. Lorsque vous définissez à True (« vrai ») la valeur de cette variable, un nouveau profil utilisateur sera créé automatiquement chaque fois qu'un nouvel utilisateur s'identifiera (et à condition que la méthode d'authentification permette l'auto-création).

Actuellement, il est possible d'utiliser les méthodes d'authentification suivantes :

Autres méthodes d'authentification

Celles-ci ne sont pas à proprement parler des méthodes d'authentification, puisqu'elles n'authentifient pas des utilisateurs, mais utilisent des informations issues de l'authentification à d'autres fins :

MoinMoin.auth.interwiki n'est pas terminé, le code est expérimental - ne pas utiliser.

Greffons embarqués

   1     from MoinMoin.auth import moin_cookie
   2     auth = [moin_cookie]

Ceci est la liste par défaut que moin utilise (et donc si c'est que vous voulez, vous n'aurez rien à configurer). Cela signifie que moin tente juste d'utiliser le cookie MOIN_ID comme il l'a toujours fait.

Pour faire cela, moin va appeler la fonction MoinMoin.auth.moin_cookie. Cette fonction va regarder si un cookie valide existe :

http auth

Pour activer l'authentification http vous devez ajouter les lignes suivantes dans wikiconfig.py :

   1     from MoinMoin.auth import http
   2     auth = [http]

Lorsque l'authentification HTTP basic est utilisée avec un serveur web comme Apache, le serveur web prend en charge l'authentification avant que moin ne soit appelé. Soit vous entrez des noms d'utilisateur et mots de passe valides, soit l'accès au serveur web vous est interdit.

La méthode d'authentification http de moin va donc juste vérifier que l'authentification a eu lieue :

En pratique c'est un peu plus compliqué :

sslclientcert auth

Pour activer l'authentification à l'aide de certificats SSL clients, vous devez ajouter les lignes suivantes dans wikiconfig.py :

   1     from MoinMoin.auth import sslclientcert
   2     auth = [sslclientcert]

Pour l'authentification avec certificats SSL clients utilisée avec un serveur web comme Apache, le serveur web gère l'authentification avant que moin ne soit appelé. Soit vous avez un certificat SSL client valide, soit votre accès sera refusé au serveur web.

Bref la méthode authentification sslclientcert de moin va juste vérifier si l'authentification a eue lieu :

php_auth

Pour activer l'intégration de Single-Sign-On avec les applications PHP, utilisez ce module. Il lit les fichiers de session PHP et à partir de là s'intègre directement avec les systèmes d'authentification PHP.

Pour utiliser ce module, ajoutez les lignes suivantes dans le code votre configuration :

   1     from MoinMoin.auth import php_auth
   2     auth = [php_auth()]

php_auth : comporte les paramètres suivants :

   1 php_auth(apps=['egw'], s_path="/tmp", s_prefix="sess_")

Actuellement l'unique application PHP supportée est eGroupware 1.2. Mais il devrait être relativement facile d'ajouter quelques lignes de codes pour extraires les informations nécessaires de la session PHP.

Combiner de multiples méthodes d'authentification

Pour combiner par exemple l'authentification http et les cookies, votre wikiconfig.py pourrait contenir :

   1     from MoinMoin.auth import http, moin_cookie
   2     auth = [http, moin_cookie]

Dans cet exemple, moin va d'abord vérifier que l'authentification http renvoie un utilisateur valide. Si c'est le cas, il n'utilisera que cela. Sinon et si la valeur continue_flag retourné par la méthode d'authentification http est égale à True, il continuera à vérifier les autres méthodes d'authentification de la liste - moin_cookie dans notre cas... ( /!\ doit être mis à jour /!\ )

Créez votre propre méthode d'authentification

Voir la partie commentée des fichiers de configuration dans contrib/auth_externalcookie/ et MoinMoin/auth.py dans l'archive distribuée de moin pour obtenir des exemples de mise en place d'une authentification.

Voici un court résumé de ce qui est actuellement possible :