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.c

Configuration

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.so

Essayez 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 normales

Section 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 ?

Page de connexion élégante

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.xrd

Variante 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.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.