Базовая аутентификация 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) имеют проблему.


Мои тестовые шаги


Советы:

Обратите внимание на порядок при даунгрейде этих двух пакетов, я забыл конкретный порядок, вы можете попробовать, вы точно сможете завершить даунгрейд.

Другие вопросы по тегам