Tôi đang sử dụng ocelot làm cổng API cho microservice của mình với IdentityServer4 để xác thực. Trong tệp cấu hình ocelot, tôi đã thêm "Xác thực" và đặt khóa api. Trong Startup tôi thêm máy chủ Nhận dạng. Trong máy chủ nhận dạng, tôi sử dụng giá trị từ tiêu đề để tự động xây dựng chuỗi kết nối. Khi tôi gửi yêu cầu nhận mã thông báo, các tiêu đề có thể truy cập được trong dịch vụ nhận dạng. Nhưng khi tôi gửi yêu cầu tiếp theo với các tiêu đề gốc mã thông báo không có sẵn. Chỉ tiêu đề "Máy chủ" có thể hiển thị trong dịch vụ nhận dạng.
Có cách nào để giữ tiêu đề gốc trong khi định tuyến yêu cầu đến máy chủ nhận dạng không?
Startup.cs (Thêm máy chủ nhận dạng)
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": []
}
}]