web-dev-qa-db-fra.com

Azure Web App + Node.js + Azure AD = Erreur 431

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:

  • Créer une nouvelle ressource Azure -> Application Web
    • Sélectionnez n'importe quel Node runtime stack, par exemple Node 12 LTS
    • Sélectionnez n'importe quel système d'exploitation
    • Créez l'application Web et attendez la fin du déploiement
  • Créez une application Web simple
  • Dans les paramètres de l'application Web, accédez à "Authentification/Autorisation"
    • Réglez "Authentification App Service" sur "Activé"
    • Sélectionnez Azure Active Directory
    • Sélectionnez le mode de gestion express et créez une nouvelle application Azure AD dans le processus
    • Sous "Action à entreprendre lorsque la demande n'est pas authentifiée", sélectionnez "Se connecter avec Azure AD"
    • Confirmer

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:

  • Désactivez l'authentification et tout fonctionne à nouveau correctement
  • Téléchargez un simple fichier .html au lieu d'un Node fonctionne correctement avec l'authentification activée
  • Testé avec restify et http

Des idées? Est-ce que je manque quelque chose?

4
Dirk Songür

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

2
Bryan Trach-MSFT