Как добавить NTLM-аутентификацию в ядро ​​.net, когда приложение может быть размещено самостоятельно или IIS - PullRequest
0 голосов
/ 04 мая 2018

У меня есть базовое приложение .net, которое должно использовать проверку подлинности NTLM. Если я использую пакет Microsoft.AspNetCore.Server.HttpSys

WebHost.CreateDefaultBuilder(args)
       .UseStartup<Startup>()
       .UseHttpSys(options =>{
                              options.Authentication.Schemes =  AuthenticationSchemes.NTLM | AuthenticationSchemes.Negotiate;
                              options.Authentication.AllowAnonymous = false;
                             }).Build()

Это будет прекрасно работать, если я сам хост, но если он развернут на IIS, он потерпит крах.

Та же разница, если я не использую его и использую настройки IIS для обеспечения аутентификации Windows, если мне нужно запустить самодостаточно, он вылетит.

Есть ли способ создать один исполняемый файл, который будет работать для обоих сценариев?

1 Ответ

0 голосов
/ 04 мая 2018

Да, но это решение немного неясное.

Существует настройка, указывающая, обеспечивает ли IIS аутентификацию. Но эта настройка определяется константой, помеченной как внутренняя. Так что вы можете получить к нему доступ, если вы жестко закодируете волшебную строку "IIS_HTTPAUTH".

var webhost = WebHost.CreateDefaultBuilder(args)
                     .UseStartup<Startup>();
//If not hosted by IIS for auth
if (String.IsNullOrEmpty(webhost.GetSetting("IIS_HTTPAUTH"))) {
    webhost = webhost.UseHttpSys(options => {
                            options.Authentication.Schemes =  AuthenticationSchemes.NTLM | AuthenticationSchemes.Negotiate;
                            options.Authentication.AllowAnonymous = false;
                       });
}
return webhost.Build();

Ток по состоянию на .netcore2.0.X

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...