Table of Contents

Authentification (authentification HTTP Digest)

Aperçu

Si le compteur eGauge est configuré avec une authentification par mot de passe pour l'ensemble du site, toutes les ressources nécessiteront une authentification HTTP Digest. De nombreux langages de programmation et bibliothèques prennent en charge l'authentification HTTP Digest ; il est donc préférable d'utiliser des bibliothèques fiables et régulièrement mises à jour plutôt que des implémentations personnalisées. En l'absence de prise en charge existante de l'authentification HTTP Digest, il est possible de l'implémenter manuellement. eGauge Systems ne peut fournir d'assistance pour cette implémentation.

Wikipedia fournit des informations et des exemples sur la mise en œuvre de l'authentification Digest et les valeurs d'en-tête à renvoyer. Notez que toute ressource protégée par l'API XML utilise un niveau de protection (« auth »), ce qui influe sur le calcul des valeurs d'en-tête lors de l'authentification HTTP Digest.

Instructions

  1. Effectuez une requête non authentifiée pour accéder à la ressource souhaitée.
  2. Examinez l'en-tête WWW-Authentication renvoyé. Stockez les valeurs suivantes :
    Digest realm (espace de ressources protégées. Il s'agit généralement de « l'administration eGauge », sauf si l'interface est personnalisée).
    nonce (nonce du serveur, change pour chaque requête non authentifiée)
    qop (sera toujours « auth » pour l'API XML eGauge)
  3. Effectuez les calculs suivants :
    HA1 = MD5(username:realm:password)
    HA2 = MD5(method:digestURI) (notez que digestURI correspond au chemin de la ressource, sans inclure l’hôte ni le nom de domaine complet. Par exemple : /cgi-bin/egauge-show)
    response = MD5(HA1:nonce:nonceCount:cnonce:qop:HA2) (nonceCount peut être « 1 » pour la requête initiale. cnonce
    est un nonce généré par le client, tel qu'une valeur hexadécimale de 64 bits)
  4. Envoyez une requête à la même URI qu'à l'étape 1, et cette fois-ci incluez un en-tête « Authorization » avec les paramètres et valeurs suivants :
    1. Digest username = nom d'utilisateur pour l'authentification
    2. realm = royaume (de l'étape 2)
    3. nonce = nonce du serveur (de l'étape 2)
    4. uri = uri de requête (utilisée dans HA2 à l'étape 3)
    5. response = réponse (générée à l'étape 3)
    6. qop = « auth »
    7. nc = nombre de nonces (peut simplement être égal à « 1 » pour les tests, doit être incrémenté pour les requêtes suivantes qui réutilisent le même nonce)
    8. cnonce = nonce client généré à l'étape 3

Information

  • Il n'est pas toujours nécessaire d'effectuer l'étape 2 de ce processus si vous effectuez des requêtes répétées vers la même ressource (URI ou « digestURI »). Un nonce serveur expire après 10 minutes et toute tentative de réutilisation entraînera une erreur 401 avec un en-tête WWW-Authenticate similaire à celui de l'étape 1, avec le paramètre « stale=true » dans la chaîne d'en-tête.