Apache OpenID · 10 min read · Dec 27, 2025
Installer et configurer le module Apache pour l'authentification OpenID
Module Apache pour l’authentification OpenID
OpenID est une technologie largement adoptée pour l’authentification des utilisateurs dans les applications web. Elle repose sur les concepts d’authentification utilisateur distribuée dans les applications de blog. Ce petit livre de cuisine explique étape par étape comment installer et configurer le module Apache open source mod_auth_oid.
Le but de ce module est de fournir une simple implémentation de partie de confiance qui peut être utilisée pour protéger l’accès aux applications et ressources web basées sur Apache. Le module n’implémente pas toutes les fonctions décrites dans la spécification officielle. Cependant, ses fonctionnalités sont déjà suffisamment matures pour offrir une convivialité de connexion confortable pour vos applications et utilisateurs.
Il y a également deux modules supplémentaires inclus qui améliorent le module d’authentification avec la capacité de mapper les identifiants utilisateur à des utilisateurs locaux non seulement via la configuration Apache, mais aussi via un fichier de mappage local (qui peut déjà exister d’autres applications) ou via Ldap.
Avertissement de sécurité : Le module ne prend pas en charge les extensions de protocole comme PAPE. Par conséquent, son utilisation dans des environnements avec des exigences plus élevées en matière de protection des données, comme les soins de santé ou les transactions monétaires, n’est pas recommandée.
Installation
Prérequis
Pour installer ce module Apache, les exigences suivantes doivent être satisfaites :
- Apache 2.2 incluant mod_ssl, mod_proxy, mod_include, fichiers d’en-tête et apxs/apxs2 (souvent appelés paquets apache2 et apache2-devel).
- Module Apache mod_parp pour l’analyse des paramètres. Obtenez-le ici. L’installation est simple : utilisez sudo ou connectez-vous en tant que root :
$ tar xvBzf mod_parp-0.10-src.tar.gz $ cd mod_parp-0.10 $ sudo apxs2 -i -c apache2/mod_parp.c $ sudo chmod 755 /usr/lib64/apache2/mod_parp.so
Module principal
Téléchargez et décompressez le code source d’ici.
$ tar xvBzf mod_auth_oid-2.0-src.tar.gz
$ cd mod_auth_oid-2.0
$ sudo apxs2 -i -c -I . -D AOID_MOD_EXT_HOOKS apache2/mod_auth_oid.c -lcrypto -lparp*Optionnel : Il existe des modules supplémentaires qui accompagnent le code source. Si vous souhaitez également utiliser le module supplémentaire fortement recommandé mod_auth_oid_file.c ou le mod_auth_oid_ldap.c, veuillez les compiler et les installer également avec l’une des commandes suivantes.*
$ sudo apxs2 -i -c -I . apache2/mod_auth_oid_file.c
$ sudo apxs2 -i -c -I . apache2/mod_auth_oid_ldap.cConfiguration
Section Serveur
Les modules standards Apache suivants sont requis :
- mod_ssl (fournit des routines de cryptage utilisées par mod_auth_oid)
- mod_proxy (fournit des fonctions pour mod_auth_oid afin d’envoyer des requêtes aux fournisseurs OpenID)
- mod_include (fournit le rendu des pages shtml)
Activez les modules dans la section de configuration globale de votre Apache. Ajustez l’emplacement du fichier en fonction de la disposition de votre système de fichiers. Il est également important que les modules soient chargés après mod_ssl. Placez donc ces lignes à la fin de votre bloc LoadModule d’Apache. Décommentez les deux dernières lignes avec les modules de mappage si vous avez l’intention de les utiliser également. Si votre distribution a un style individuel pour le chargement des modules, veuillez le faire selon leurs instructions (par exemple, placez les lignes suivantes dans un fichier qui est inclus automatiquement s’il se trouve dans un répertoire spécifique comme modules-enabled ou similaire.
LoadModule parp_module /usr/lib64/apache2/mod_parp.so
LoadModule auth_oid_module /usr/lib64/apache2/mod_auth_oid.so
# LoadModule auth_oid_file_module /usr/lib64/apache2/mod_auth_oid_file.so
# LoadModule auth_oid_ldap_module /usr/lib64/apache2/mod_auth_oid_ldap.soEssayez de redémarrer votre serveur. Si le module est chargé correctement, il devrait être signalé dans le error.log du serveur :
[Sun Nov 06 12:10:59 2011] [notice] Apache/2.2.17 (Linux/SUSE) mod_ssl/2.2.17 OpenSSL/1.0.0c mod_auth_oid/2.0 configuré -- reprise des opérations normalesSection VirtualHost
Il est maintenant temps de préparer la configuration spécifique pour protéger votre application. Modifiez votre configuration VirtualHost. Bien sûr, il devrait s’agir de votre VirtualHost https car nous traitons de la sécurité ici. Et remplacez mon OpenID YOURNAME par votre propre OpenID, sinon YOURNAME pourrait un jour voler vos joyaux de la couronne. ;) Si vous souhaitez utiliser Google comme fournisseur OpenID, vous devez procéder d’une manière légèrement différente et ajouter un AOID_UserPattern, car Google utilise l’approche d’identité dirigée avec des OpenID opaques par site. Dans le dernier chapitre de ce guide, intitulé Réduire l’espace de noms de vos fournisseurs OpenID préférés, la directive de configuration est expliquée avec un exemple Google.
Nous supposons que la ressource que nous souhaitons protéger est l’emplacement /private et que le gestionnaire d’authentification est situé sur /aoid. Les sections ci-dessous sont commentées pour indiquer ce que vous devez faire.
# Une référence complète de toutes les options de configuration disponibles
# est disponible sous : http://auth-openid.sourceforge.net/
# Attention : Activez sur des CA de confiance en les plaçant dans cacerts
# Liez-les à des noms de hachage comme décrit dans la documentation Apache
# http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslproxycacertificatepath
SSLProxyEngine on
SSLProxyCACertificatePath /etc/ssl/cacerts
# utilisez le drapeau httponly pour empêcher les attaques XSS sur le cookie de session
BrowserMatch "Mozilla.*Firefox/(3|4)" HttpOnlyCookie
BrowserMatch "MSIE [6789]" HttpOnlyCookie
BrowserMatch "Opera/(10|9\.[56789])" HttpOnlyCookie
BrowserMatch Secure SecureCookie
# paramètres de base mod_auth_oid
AOID_Realm /
AOID_StartPage /private/index.html
AOID_LogLevel info
AOID_LoginPath /aoid/login
AOID_LoginSuffix .shtml
AOID_Timeout 300
AOID_CookieName AJESSIONID
# Mappage des utilisateurs OpenID. D'autres possibilités sont décrites
# dans le chapitre "Mappage de fichiers locaux" de la page Howtoforge
# utilisateurs autorisés/reconnus REMPLACER PAR VOTRE OPENID
AOID_User http://YOURNAME.myopenid.com/ YOURNAME
# Appliquer l'authentification utilisateur mod_auth_oid de l'emplacement suivant
AuthType OpenID
Require valid-user
# page de connexion mod_auth_oid
# activer SSI pour la page de connexion (nécessite mod_include)
Options Includes
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
Fichiers
Créez maintenant un répertoire nommé private dans le DocumentRoot de votre VirtualHost, qui contient le contenu que vous souhaitez protéger. Par exemple, ajoutez un fichier index.html qui dit : “Yeahh !! mod_auth_oid déchire et j’ai piraté 127.0.0.1 !.
De plus, vous avez besoin d’une page de connexion dans le répertoire aoid qui se trouve également dans le DocumentRoot. Pour commencer, vous pouvez utiliser la page SHTML d’exemple du répertoire htdocs dans l’archive. Copiez-la également dans votre htdocs. Vérifiez les permissions des fichiers nouvellement créés, si elles correspondent aux préférences de votre serveur web.
Vous pouvez maintenant redémarrer votre Apache une fois de plus. Veuillez vérifier le error.log pour voir si tout va bien.
Testez votre installation
Ouvrez maintenant votre navigateur. Si vous avez tout fait correctement et que votre Apache le fait aussi, alors vous devriez voir une page de connexion lorsque vous pointez votre navigateur vers l’URL suivante : https://YOURHOST/private/index.html
Sélectionnez votre fournisseur et soumettez. Le module vous redirigera vers votre fournisseur où vous vous connectez, et si cela a réussi, vous serez renvoyé à votre application privée. Si vous choisissez Google, soumettez simplement l’identifiant OP proposé, dans les deux autres cas, entrez votre OpenID dans la partie mise en surbrillance. Plus tard dans le guide, une solution beaucoup plus pratique pour une page de connexion au design élégant est décrite.
Débogage en cas de problème
Dans le cas peu probable où quelque chose ne fonctionne pas comme prévu, vous avez plusieurs indications sur ce qui pourrait être faux dans le error.log de votre serveur Apache. Les messages de log devraient indiquer ce qui échoue. Une liste détaillée des codes d’erreur possibles et comment activer un niveau de log plus élevé peut être trouvée sur la page mod_auth_oid.
Options supplémentaires
Page de connexion élégante
Je suppose que vous êtes comme moi, et l’une des premières choses que vous aimeriez voir est une page de connexion au design agréable dans le navigateur. Cela ressemble-t-il à quelque chose de suffisamment cool pour votre goût ?

Cette page de connexion au design professionnel a été créée avec le projet open source openid-selector qui est un moyen convivial de sélectionner un OpenID.
Après avoir généré la page de connexion, elle doit être améliorée avec les éléments d’inclusion shtml de mod_auth_oid. J’ai ajouté la partie de rendu d’erreur de la page de connexion originale dans la page html générée par openid-selector. Mon exemple de page personnalisée peut être téléchargé ici.
Mappage des identifiants utilisateur locaux
Si vous avez également compilé le module mod_auth_oid_file, vous pouvez également mapper vos enregistrements d’identifiants utilisateur dans un fichier local au lieu de les ajouter tous à votre fichier de configuration Apache. Les instructions détaillées peuvent être trouvées ici.
Lisez le chapitre suivant pour ajouter l’auto-inscription des utilisateurs avec le mappage de fichiers locaux en une seule fois.
Administration autonome des utilisateurs Un mappage OpenID vers un identifiant utilisateur local
Supposons que vous ayez déjà une administration des utilisateurs en place basée sur les fichiers .htpasswd d’Apache, vous pouvez utiliser le snippet de configuration suivant pour l’améliorer, afin que les utilisateurs puissent enregistrer un compte OpenID à leurs comptes locaux. Copiez le fichier file_mapper.html de l’archive dans votre htdocs.
# Section Virtual Host
AOID_File_DB /etc/apache2/mapdb
AOID_File_AdminPage /usr/local/apache2/htdocs/file_mapper.html
# Emplacement de l'administration de profil
# Ajustez le chemin du fichier en fonction de votre fichier .htpasswd existant
AuthUserFile /srv/data/.htpasswd
AuthName 'Entrez votre nom d'utilisateur : Annuler pour s'inscrire si vous n'en avez pas.'
AuthType Basic
Require valid-user
SetEnvIf Request_Method POST parp
SetEnvIf Request_Method GET parp
SetHandler auth-oid-file
AOID_File_UserOnly on
Maintenant, mod_auth_oid_file crée un fichier mapdb où il stocke la relation entre les comptes OpenID et les comptes .htpasswd locaux.
Considérations de sécurité
Document de découverte de la partie de confiance
OpenID recommande d’héberger un Document de découverte de la partie de confiance qui indique une adresse return_to appropriée pour le fournisseur OpenID. Yahoo indiquera votre site comme non fiable si vous ne fournissez pas un tel document. De plus amples informations peuvent être trouvées ici.
Enregistrez un document appelé openid.xrd dans le DocumentRoot de votre site. Le contenu doit ressembler à l’exemple suivant. Ajustez-le en fonction de votre configuration.
http://specs.openid.net/auth/2.0/return_to
https://YOUR_HOST_HERE/aoid/login
Le document doit ensuite être référencé soit en envoyant un en-tête spécialement conçu avec chaque réponse HTTP, soit il peut être inclus dans le document de niveau supérieur du site.
Variante 1 annoncez-le via l’en-tête (recommandé)
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
# .......
Header set X-XRDS-Location https://YOUR_HOST_HERE/openid.xrdVariante 2 annoncez-le dans la section head du document html de niveau supérieur
....
....Protection contre les attaques DoS et autres types d’attaques
Les attaques DoS et la falsification de requêtes intersites sont un problème majeur aujourd’hui. Vous pouvez protéger efficacement votre site contre les attaques DoS avec un autre module open source, appelé mod_qos. Ce module est un couteau suisse lorsqu’il s’agit de protéger votre serveur contre divers types d’attaques. Le module peut être installé aussi facilement que n’importe quel autre module Apache. L’exemple de configuration suivant montre une configuration de base qui protège votre site contre les attaques DoS et la falsification de requêtes intersites sur la page d’auto-administration.
# section serveur
LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so
# gère les connexions de jusqu'à 100000 IP différentes
QS_ClientEntries 100000
# n'autorisera que 50 connexions par IP
QS_SrvMaxConnPerIP 50
# le nombre maximum de connexions TCP actives est limité à 256
MaxClients 256
# désactive le keep-alive lorsque 70 % des connexions TCP sont occupées :
QS_SrvMaxConnClose 180
# vitesse minimum de requête/réponse (refuser les clients lents bloquant le serveur, c'est-à-dire slowloris maintenant des connexions ouvertes sans rien demander) :
QS_SrvMinDataRate 120 1500 400
# et limite l'en-tête et le corps de la requête (attention, cela limite également les téléchargements et les requêtes post) :
QS_SrvMaxConnClose 70%
LimitRequestFields 30
QS_LimitRequestBody 102400
QS_ClientEventBlockCount 20 300
QS_SetEnvIfStatus 400 QS_Block
QS_SetEnvIfStatus 401 QS_Block
QS_SetEnvIfStatus 403 QS_Block
QS_SetEnvIfStatus 404 QS_Block
QS_SetEnvIfStatus 405 QS_Block
QS_SetEnvIfStatus 406 QS_Block
QS_SetEnvIfStatus 408 QS_Block
QS_SetEnvIfStatus 411 QS_Block
QS_SetEnvIfStatus 413 QS_Block
QS_SetEnvIfStatus 414 QS_Block
QS_SetEnvIfStatus 417 QS_Block
QS_SetEnvIfStatus 500 QS_Block
QS_SetEnvIfStatus 503 QS_Block
QS_SetEnvIfStatus 505 QS_Block
QS_SetEnvIfStatus QS_SrvMinDataRate QS_Block
QS_SetEnvIfStatus NullConnection QS_Block
QS_SrvMaxConnExcludeIP 127.0.0.1
# Protection CSRF du formulaire d'auto-inscription en définissant
# quatre jalons pour l'administration de profil
QS_MileStone deny "^GET /OpenIdLogin"
QS_MileStone deny "^GET /OpenIDRegistration"
QS_MileStone deny "^GET /profile"
QS_MileStone deny "^POST /profile"Réduire l’espace de noms de vos fournisseurs OpenID préférés
Vous pouvez limiter quels fournisseurs OpenID vous acceptez pour l’authentification de votre site web avec la directive de configuration AOID_UserPattern. Les deux exemples suivants vous donnent une idée générale de la façon de construire des expressions régulières à cet effet.
# section VirtualHost
# Autoriser uniquement les OpenID de Google
AOID_UserPattern "^(https://www\.google\.com/accounts/o8/id\?id=.*)$" "$1"
# Autoriser uniquement les OpenID de my.company.com et utiliser uniquement une partie de celui-ci pour le mapper à un utilisateur local.
AOID_UserPattern "^https://my\.company\.com/([a-z]{1})[a-z]+\.([a-z]{2})[a-z]+$" "$1$2"Derniers mots
Merci d’avoir lu ce tutoriel. J’espère que votre installation s’est déroulée sans problème. Je vous souhaite que de nombreux utilisateurs profitent de ce module et j’espère que vous vous êtes amusé à l’installer. Si vous souhaitez rester informé de ce qui se passe avec le module, vous pouvez vous abonner à notre page Facebook mod_auth_oid.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.