Saya menggunakan ocelot sebagai gateway API untuk layanan microser saya dengan IdentityServer4 untuk otentikasi. Dalam file konfigurasi ocelot saya menambahkan "AuthenticationOptions" dan mengatur kunci api. Di Startup saya menambahkan server Identity. Di server identitas saya menggunakan nilai dari header untuk secara dinamis membangun string koneksi. Ketika saya mengirim permintaan untuk mendapatkan token, tajuk dapat diakses di layanan identitas. Tetapi ketika saya mengirim permintaan berikutnya dengan tajuk asli token tidak tersedia. Hanya tajuk "Host" yang dapat dilihat di layanan identitas.
Apakah ada cara untuk menjaga tajuk asli saat merutekan permintaan ke server identitas?
Startup.cs (Tambah server identitas)
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": []
}
}]