Базовая аутентификация CoreWCF — .NET 6
Я пишу CoreWCF PoC, и мне нужно использовать HTTPS, BasicHttpBinding и Basic Authentication.
Все работало нормально, пока я не попытался активировать обычную аутентификацию. Итак, приведенный ниже код с привязкой, которая устанавливает ClientCredentialType в HttpClientCredentialType.Basic:
var basicHttpBinding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
basicHttpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
var app = builder.Build();
app.UseServiceModel(builder =>
{
// Add service with a BasicHttpBinding at a specific endpoint
builder.AddService<DownloadService>((serviceOptions) => {
serviceOptions.DebugBehavior.IncludeExceptionDetailInFaults = true;
}).AddServiceEndpoint<DownloadService, IDownloadService>(basicHttpBinding, "/DownloadService/basichttp");
});
выдает исключение при запуске: System.InvalidOperationException: «Невозможно разрешить службу для типа «Microsoft.AspNetCore.Authentication.IAuthenticationSchemeProvider» при попытке активировать «Microsoft.AspNetCore.Authentication.AuthenticationMiddleware».
Любая идея, как я могу настроить BasicAuthentication в CoreWCF, чтобы впоследствии прочитать, кто является вошедшим в систему пользователем.
1 ответ
Я воспроизвел упомянутую вами проблему. Я решаю это, понижая версию пакета CoreWCF до 1.0.2 или 1.0.1. Другие версии (> 1.0.2) имеют проблему.
Мои тестовые шаги
Советы:
Обратите внимание на порядок при даунгрейде этих двух пакетов, я забыл конкретный порядок, вы можете попробовать, вы точно сможете завершить даунгрейд.