J'ai créé une application Web basée sur Node.js, exécutée dans une application Web Azure, que je voulais mettre derrière une authentification Azure Active Directory. Après avoir activé "l'authentification App Service", le processus de connexion fonctionne normalement, mais en revenant à mon application, il renvoie simplement un HTTP 431 "Request Header Fields Too Large".
Pour valider ce n'est pas mon application, j'ai vérifié l'exemple d'application Web Azure pour Node.js et même cela renvoie un 431 lors de l'activation de AAD.
Étapes à suivre pour reproduire:
Résultat: lors de l'ouverture de l'URL de l'application Web avec un navigateur, il affichera le processus de connexion, après le processus, tout semble fonctionner correctement et l'AAD retourne à l'application, mais à ce stade, il renvoie un HTTP 431.
Autres tests:
Des idées? Est-ce que je manque quelque chose?
Il s'agit d'un problème connu car il existe des limitations avec les versions plus récentes du nœud qui utilisent une limite fixe de 8 Ko pour les en-têtes. EasyAuth ajoute des en-têtes très volumineux à la requête, ce qui peut amener le conteneur de nœuds à rejeter la requête faite par le conteneur middleware avec un 400. Pour en savoir plus, cliquez ici: Ceci peut être atténué en définissant le paramètre d'application WEBSITE_AUTH_DISABLE_IDENTITY_FLOW sur true. Cela supprimera l'un des plus grands en-têtes que nous ajoutons à la demande. Cet en-tête n'est généralement utilisé que par les applications .NET Framework et Azure Functions, ce paramètre doit donc être sûr.
Si le problème persiste, vous pouvez essayer avec les versions NodeJS 12 ou augmenter le paramètre de taille d'en-tête: node server.js --max-http-header-size 81000