Il ne faut pas confondre ...

Publié le par Peck

Cet article est maintenant sur http://linux-attitude.fr/post/Il-ne-faut-pas-confondre

Niveau
:
Résumé: $_SERVER['PHP_AUTH_USER']

Il ne faut pas confondre authentification, identification et autorisation.

L'identification est le processus qui permet à une application de reconnaître une personne. Elle se fait en général par échange de login. Celui-ci peut être prolongé par la correspondance de ce login avec le contenu d'une base de données.

L'authentification c'est le fait de vérifier qu'une personne est bien ce qu'elle prétend être. C'est un processus qui se déroule en général par échange de mot de passe. Mais il est aussi possible d'authentifier une personne avec une carte à puce par exemple.

L'autorisation est le processus qui à partir de l'identification d'une personne dûment authentifiée donne des droits d'accès à une application ou à des données.

Chacune de ces tâches est bien distincte.

Dans le cas du système, l'identification est faite par nss, l'authentification par pam et l'autorisation par le noyau ou par l'application concernée.

Dans le cas du web, il est possible de tout faire faire par PHP ou de tout faire faire par apache.


Apache dispose d'un mécanisme standard d'authentification qui est intégré au protocole HTTP. Il dispose aussi naturellement de mécanismes d'autorisation d'accès en fonction des url accédées. Par contre l'identification dans apache n'est pas particulièrement utile et se résume donc à inclure le login dans les logs.

Php ne dispose pas naturellement de ces fonctions et donc les nombreuses applications qui suivent ce processus doivent tout redévelopper elles-mêmes. C'est une chose à éviter. Si c'est ce que vous faites, STOP ! vous êtes en train de recoder la roue. En l'absence de l'expérience accumulée sur les mécanismes spécialisés il est certain que les trous de sécurité et les erreurs s'accumulent dans votre application.


La solution est tout simplement de laisser apache faire l'authentification. Quitte à faire vous même l'autorisation en PHP si vous préférez.
Pour cela rien de plus simple, modifiez le fichier .htaccess de votre racine.


AuthType Basic
AuthName Authentification
AuthUserFile /srv/http/site/htpassword
Require valid-user

Et ensuite, vous avez le login disponible en php dans la variable $_SERVER['PHP_AUTH_USER']

Et si vous trouvez plus pratique de gérer vos utilisateurs dans une base sql, il y a mod_auth_mysql qui vous permettra de le faire.


Alors faites ce que je vous dis et laissez faire les pros de l'authentification. Vous me remercierez le jour où vous aurez besoin d'automatiser les accès à votre application, le jour où vous voudrez garantir une authentification commune, le jour ou vous voudrez changer de méthode d'authentification et surtout le jour où vous voudrez mettre en place un SSO (Single Sign On).

Publié dans admin

Commenter cet article