Installation derrière un reverse-proxy
Lorsqu'une application Lagoon est déployée derrière un reverse-proxy ou une gateway, il faut activer le transfert d'en-têtes HTTP.
Activation du transfert d'en-têtes HTTP
Ajouter la configuration suivante dans appsettings.json :
{
"Lagoon": {
"UseForwardedHeaders": true
}
}
Le middleware UseForwardedHeaders est automatiquement ajouté par Lagoon avec l'option ForwardedHeaders.All.
Pour plus d'informations, voir la documentation Microsoft :
- https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.builder.forwardedheadersextensions.useforwardedheaders?view=aspnetcore-8.0
- https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.httpoverrides.forwardedheaders?view=aspnetcore-8.0
- https://learn.microsoft.com/fr-fr/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-8.0
La méthode OnConfigureForwardedHeaders permet de personnaliser le transfert d'en-têtes.
Erreur OpenID Connect request cannot be retrieved
Si la méthode GET /connect/authorize retourne l'exception The OpenID Connect request cannot be retrieved, c'est probablement parce que le nom d'hôte de la requête HTTP ne correspond pas au PublicUrl défini dans appsettings.json.
Vérifier que :
- l'URL définie en tant que
PublicUrlest correcte ; - l'option
UseForwardedHeadersest àtruedans le fichier de configuration.
Azure Application Gateway
Azure Application Gateway n'envoie pas l'en-tête X-Forwarded-Host, mais l'en-tête X-Original-Host.
Il faut modifier la configuration de l'application en ajoutant dans le fichier Main.cs du projet Server la méthode suivante :
///<inheritdoc/>
protected override void OnConfigureForwardedHeaders(ForwardedHeadersOptions options)
{
base.OnConfigureForwardedHeaders(options);
options.ForwardedHostHeaderName = "X-Original-Host";
}
Pour plus de souplesse, la valeur peut être lue à partir de la configuration.