Kimlik doğrulama için IdentityServer4 ile mikro hizmetlerim için ocelot API ağ geçidi olarak kullanıyorum. Ocelot yapılandırma dosyasına "AuthenticationOptions" ı ekledim ve api anahtarını ayarladım. In Başlangıç ben Kimlik sunucu eklemek. Kimlik sunucusunda bağlantı dizesini dinamik olarak oluşturmak için üstbilgiden değer kullanıyorum. Jeton alma isteğini gönderdiğimde, kimlik hizmetinden başlıklara erişilebilir. Ancak jetonla bir sonraki istek gönderdiğimde orijinal başlıklar mevcut değildir. Kimlik hizmetinde yalnızca "Ana Bilgisayar" başlığı görülebilir.
İsteği kimlik sunucusuna yönlendirirken orijinal üstbilgiyi korumanın bir yolu var mı?
Startup.cs (Kimlik sunucusu ekle)
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": []
}
}]