Intergiciel : L’intergiciel de redirection HTTPS lève une exception sur les ports HTTPS ambigus

Dans ASP.NET Core 6.0,l’intergiciel de redirection HTTPS lève une exception de type InvalidOperationException lorsqu’il trouve plusieurs ports HTTPS dans la configuration du serveur. Le message de l’exception contient le texte « Impossible de déterminer le port https à partir de IServerAddressesFeature, plusieurs valeurs ont été trouvées. Définissez explicitement le port souhaité sur HttpsRedirectionOptions.HttpsPort. »

Pour plus d’informations, consultez le problème GitHub dotnet/aspnetcore#29222.

Version introduite

ASP.NET Core 6.0

Ancien comportement

Lorsque l’intergiciel de redirection HTTPS n’est pas explicitement configuré avec un port, il effectue une recherche IServerAddressesFeature lors de la première requête pour déterminer le port HTTPS vers lequel il doit se rediriger.

S’il n’existe aucun port HTTPS ou plusieurs ports distincts, le port à utiliser n’est pas évident. L’intergiciel journalise un avertissement et se désactive. Les requêtes HTTP sont traitées normalement.

Nouveau comportement

Lorsque l’intergiciel de redirection HTTPS n’est pas explicitement configuré avec un port, il effectue une recherche IServerAddressesFeature lors de la première requête pour déterminer le port HTTPS vers lequel il doit se rediriger.

S’il n’y a pas de ports HTTPS, l’intergiciel enregistre toujours un avertissement et se désactive. Les requêtes HTTP sont traitées normalement. Ce comportement prend en charge :

  • des scénarios de développement sans HTTPS
  • des scénarios hébergés dans lesquels TLS est arrêté avant d’atteindre le serveur.

S’il existe plusieurs ports, le port à utiliser n’est pas évident. L’intergiciel lève une exception et échoue à la requête HTTP.

Raison du changement

Ce changement empêche les données potentiellement sensibles d’être traitées sur des connexions HTTP non chiffrées lorsque HTTPS est connu pour être disponible.

Pour activer la redirection HTTPS lorsque le serveur a plusieurs ports HTTPS distincts, vous devez spécifier un port dans la configuration. Pour plus d'informations, consultez Configuration des ports.

Si vous n’avez pas besoin de l’intergiciel de redirection HTTPS dans votre application, supprimez UseHttpsRedirection de Startup.cs.

Si vous devez sélectionner le port HTTPS approprié de manière dynamique, fournissez des commentaires dans le problème GitHub dotnet/aspnetcore#21291.

API affectées

HttpsPolicyBuilderExtensions.UseHttpsRedirection