Adaptateur d'authentification HTTPIntroductionZend_Auth_Adapter_Http fournit une implémentation des authentifications HTTP » Basicet » Digest, au regard de la norme » RFC-2617. Digest est une méthode d'authentification HTTP basée sur Basic, mais qui augmente la sécurité en fournissant un moyen d'authentification sans transmettre le mot de passe en clair, sur le réseau. Caractéristiques principales :
Il y a quelques caractéristiques de la RFC-2617 qui ne sont pas encore supportées :
FonctionnementCette adaptateur utilise 2 sous-composants, la classe d'authentification HTTP elle-même et des "Résolveurs." La classe d'authentification HTTP encapsule la logique de commande des authentifications Basic et Digest. Elle utilise aussi un résolveur pour chercher les identifiants sur un disque (fichier texte par défaut), et les analyser. Ils sont alors comparés aux valeurs envoyées par le client pour déterminer une éventuelle correspondance. Options de configurationLa classe Zend_Auth_Adapter_Http requière un tableau de configuration lors de sa construction. Il y a plusieurs options de configuration disponibles, dont certaines requises :
RésolveursLe travail du résolveur consiste à récupérer un nom d'utilisateur ("username") et un nom d'authentification ("realm") et retourner des identifiants. L'authentification Basic s'attend à recevoir une version encodée Base64 du mot de passe ("password"). L'authentification Digest, elle, attend un hash du "username", du "realm", et du "password" (séparés par des deux-points). Actuellement le seul algorithme de hash supporté est MD5. Zend_Auth_Adapter_Http se fie a des objets implémentant Zend_Auth_Adapter_Http_Resolver_Interface. Une classe de résolution de fichier texte est inclue avec cet adaptateur, mais n'importe quelle classe peut être écrite, grâce à l'interface. Résolveur fichiersCette classe est très simple. Son constructeur ne prend qu'un paramètre qui définit le nom du fichier cible. Un accesseur existe aussi. Sa méthode resolve() traverse le fichier texte à la recherche de la ligne qui correspond au "username" et au "realm". La syntaxe est similaire aux fichiers htpasswd d'Apache :
Chaque ligne se décompose en 3 champs - "username", "realm", et "credentials" - séparés par des deux-points. Le résolveur ne fait que retourner la valeur de "credentials". Ainsi, avec Basic cette valeur devra être le mot de passe en clair de l'utilisateur identifié par "username". En mode Digest, la valeur MD5 de toute la chaîne "username:realm:password" (avec les deux-points). Pour créer des résolveurs de fichiers séparés, utilisez :
ou
Si le chemin donné n'est pas lisible, une exception est envoyée. Usage général :Tout d'abord, créez un tableau de configuration avec les options requises :
Ce tableau va permettre d'accepter les modes Basic ou Digest et demandera une authentification pour les zones du site situées sous /members_only et /my_account. La valeur du "real" est en général affichée par le navigateur dans la boite de dialogue. Le paramètre nonce_timeout, fonctionne comme expliqué plus haut. Ensuite, créez un objet de Zend_Auth_Adapter_Http :
Comme nous supportons les 2 modes Basic et Digest, nous avons besoin de deux résolveurs différents :
Enfin, nous procédons à la demande d'authentification. L'adaptateur a besoin de deux objets "Request" et "Response" :
|