2015-10-21 1 views
1

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 enter image description here

Firefox authentifie avec succès et obtient une réponse avec l'en-tête Authentication-Info: nextnonce="0b72e74afbcab33a5aba05d4db03b801" enter image description here

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é. enter image description here

Même scénario que pour la première demande d'image. enter image description here

Maintenant l'authentification réussit avec le nouveau nonce. enter image description here

L'authentification réussit également pour la deuxième requête. enter image description here

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.

Répondre