Accès par authentification sous Apache avec base de donnée

Fermé
lynow Messages postés 22 Date d'inscription jeudi 18 mars 2021 Statut Membre Dernière intervention 28 juin 2023 - 18 janv. 2023 à 13:39
jordane45 Messages postés 38306 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 - 18 janv. 2023 à 16:56

Bonjour,

J'ai mis en place un accès sur une liste de répertoire sous Apache. Cela permet de récupérer des fichiers JSON et de les intégrer dans des outils adaptés.

Pour accéder à un répertoire sur le net, il faut déjà être sur la liste blanche, mais en plus il faut avoir les identifiants. J'ai mis en place une authentification basique avec utilisateur et mot de passe.

J'ai donc, dans la configuration Apache du "site", les lignes suivantes :

<VirtualHost *:443>
        ServerAdmin ***@***
        ServerName serveur_name
        DocumentRoot /var/www/serveur_name/html/

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # WHITELIST

        # Block all access to server root
        <Directory "/var/www/serveur_name/html/">
          Require all denied
        </Directory>

        # Allow white list IPs for repertory 1
        <Directory "/var/www/serveur_name/html/repertory_1">
          Require all denied
          Require ip @IP
        </Directory>

        # Authentication with database    

         DBDriver mysql
         DBDParams "dbname=site_db user=debian pass=@mdp"

         DBDMin 4
         DBDKeep 8
         DBDMax 20
         DBDExptime 300

         <Directory "/var/www/serveur_name/html/*">

          AuthType Basic
          AuthName "Auth_name"
          AuthDigestNonceLifetime 10
          AuthBasicProvider socache dbd
          AuthnCacheProvideFor dbd
          AuthnCacheContext my-server
          Require valid-user
          AuthDBDUserPWQuery "SELECT passwd FROM mysql_auth WHERE username = %s"
         </Directory>
</VirtualHost>

Cela fonctionne, ok, pas de problèmes.

Cependant, si je veux ajouter d'autres accès répertoires correspondants à autres types d'accès (donc dédié à d'autres personnes), je suis obligé de créer une autre base de donnée et dupliquer les lignes dans le fichier de configuration afin de paramétrer, pour chaque "Directory", la vérification avec la base de donnée associée.

Soit j'oublie un détail, soit ma technique n'est pas adaptée, est-il possible d'avoir de l'aide sur ceci ?

Lynow.

1 réponse

jordane45 Messages postés 38306 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
18 janv. 2023 à 15:58

Bonjour

Ne pourrais-tu pas simplement ajouter une colonne dans ta table qui permettrait de savoir dans quel répertoire ils ont accès puis, dans ta configuration Apache, dans la requête, ajouter une condition sur ce critère


0
lynow Messages postés 22 Date d'inscription jeudi 18 mars 2021 Statut Membre Dernière intervention 28 juin 2023
18 janv. 2023 à 16:42

Bonjour, merci pour ta réponse.

En effet, c'est une possibilité, cela voudrait dire que mon fichier de configuration ressemblerait à ceci :

<VirtualHost *:443>
        ServerAdmin ***@***
        ServerName serveur_name
        DocumentRoot /var/www/serveur_name/html/

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # WHITELIST

        # Block all access to server root
        <Directory "/var/www/serveur_name/html/">
          Require all denied
        </Directory>

        # Allow white list IPs for repertory 1
        <Directory "/var/www/serveur_name/html/repertory_1">
          Require all denied
          Require ip @IP
        </Directory>

        # Authentication with database    

         DBDriver mysql
         DBDParams "dbname=site_db user=debian pass=@mdp"

         DBDMin 4
         DBDKeep 8
         DBDMax 20
         DBDExptime 300

         <Directory "/var/www/serveur_name/html/*">
          AuthType Basic
          AuthName "Auth_name"
          AuthDigestNonceLifetime 10
          AuthBasicProvider socache dbd
          AuthnCacheProvideFor dbd
          AuthnCacheContext my-server
          Require valid-user
         </Directory>

         <Directory "/var/www/serveur_name/html/repertory_1">
          AuthDBDUserPWQuery "SELECT passwd FROM mysql_auth WHERE username = %s AND groups = repertory_1"
         </Directory>

         <Directory "/var/www/serveur_name/html/repertory_2">
          AuthDBDUserPWQuery "SELECT passwd FROM mysql_auth WHERE username = %s AND groups = repertory_2"
         </Directory>

</VirtualHost>

?

0
jordane45 Messages postés 38306 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705 > lynow Messages postés 22 Date d'inscription jeudi 18 mars 2021 Statut Membre Dernière intervention 28 juin 2023
18 janv. 2023 à 16:56

Oui

1