Estoy usando ocelot como puerta de enlace API para mis microservicios con IdentityServer4 para la autenticación. En el archivo de configuración de ocelot agregué "AuthenticationOptions" y configuré la clave api. En el inicio , agrego el servidor Identity. En el servidor de identidad, uso el valor del encabezado para generar dinámicamente la cadena de conexión. Cuando envío la solicitud para obtener el token, se puede acceder a los encabezados en el servicio de identidad. Pero cuando envío la próxima solicitud con el token, los encabezados originales no están disponibles. Solo el encabezado "Host" puede ser visible en el servicio de identidad.
¿Hay alguna manera de mantener el encabezado original mientras enruta la solicitud al servidor de identidad?
Startup.cs (Agregar servidor de identidad)
services
.AddAuthentication()
.AddIdentityServerAuthentication("APIParts", options =>
{
options.Authority = "http://localhost:60168";
options.RequireHttpsMetadata = false;
options.ApiName = "Parts";
options.SupportedTokens = SupportedTokens.Both;
});
ocelot.json
ReRoutes": [
{
"DownstreamPathTemplate": "/connect/token",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 60168
}
],
"UpstreamPathTemplate": "/token",
"UpstreamHttpMethod": [ "Post" ]
},
{
"DownstreamPathTemplate": "/api/Parts/Inventory",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 65241
}
],
"UpstreamPathTemplate": "/api/Parts/Inventory",
"AuthenticationOptions": {
"AuthenticationProviderKey": "APIParts",
"AllowedScopes": []
}
}]