J'ai créé un serveur HTTP basé sur C++ (ou pour reformuler - déversé une autre goutte dans l'océan) et rencontré un problème avec l'authentification HTTP digest.Prise en charge par navigateur de la directive nextnonce dans l'authentification HTTP Digest
Selon le HTTP authentication RFC utilisant la directive nextnonce
dans l'en-tête Authentication-Info
est un moyen valide de mettre en œuvre un mécanisme de nonce à usage unique. Je l'ai fait conformément à la RFC mais à la fois Chrome et Firefox semblent ignorer la directive et émettre toutes les demandes supplémentaires avec le nonce initial, déclenchant ainsi des réponses 401 inutiles. Un exemple illustration avec Firefox:
première demande - mon serveur retourne 401 et émet le nonce initial a1f778b2afc8590e4a64f414f663128b
Firefox authentifie avec succès et obtient une réponse avec l'en-tête Authentication-Info: nextnonce="0b72e74afbcab33a5aba05d4db03b801"
Firefox émet une nouvelle demande d'extraction de l'image à partir du code html renvoyé - toujours le code initial c1587dd7be6251fa715540e0d6121aa5
est utilisé et donc une réponse avec un nouveau nonce et un indicateur indiquant que le nonce expiré est renvoyé est renvoyé.
Même scénario que pour la première demande d'image.
Maintenant l'authentification réussit avec le nouveau nonce.
L'authentification réussit également pour la deuxième requête.
Comme on peut le voir dans les images - même si je réponds avec Authentication-Info: nextnonce="0b72e74afbcab33a5aba05d4db03b801"
sur une autorisation de succès sur la première demande, les deux requêtes utilisent toujours le nonce d'origine au lieu de la valeur fournie nextnonce
. Quelqu'un at-il eu une expérience similaire? Je fais très certainement quelque chose de mal - même si le RFC dit que le client DEVRAIT répondre avec la valeur nextnonce
fournie et donc ce n'est pas obligatoire, je doute fortement que les navigateurs les plus populaires n'utilisent pas cette technique.
Merci, ce fut quelque chose de très précieux. Cependant, j'ai le même problème avec Chrome, mais je vais scanner leur base de données de bogues pour voir s'ils ont aussi un bug en attente. –