Я використовую окелот як шлюз API для своїх мікросервісів з IdentityServer4 для аутентифікації. У конфігураційний файл ocelot я додав "AuthenticationOptions" і встановив ключ api. В Запуск я додаю сервер Identity. На сервері ідентифікації я використовую значення з заголовка для динамічної побудови рядка з'єднання. Коли я надсилаю запит на отримання маркера, заголовки доступні в службі посвідчення. Але коли я надсилаю наступний запит із токеном, оригінальні заголовки недоступні. У службі ідентифікації можна побачити лише заголовок "Хост".
Чи є спосіб зберегти початковий заголовок під час маршрутизації запиту на сервер ідентифікації?
Startup.cs (Додати сервер ідентифікації)
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": []
}
}]