Отправка больших POST-запросов со встроенной аутентификацией Windows в OWIN self-host - PullRequest
1 голос
/ 12 января 2020

Я пытаюсь настроить конечную точку для аутентифицированных HTTP-запросов POST, которые будут обрабатывать запросы, объем тела которых составляет около 15 КБ.

Я следовал описанию в MSDN и определил

var httpListener = (OwinHttpListener) appBuilder.Properties[typeof(OwinHttpListener).FullName];
httpListener.Listener.AuthenticationSchemeSelectorDelegate = request =>
    request.HttpMethod == "POST"
        ? AuthenticationSchemes.IntegratedWindowsAuthentication
        : AuthenticationSchemes.Anonymous;

по моему Startup.Configuration. Это работает как прелесть для небольших запросов, но я получаю HTTP 400 Bad Requests в тот момент, когда я пытаюсь отправить запрос с размером тела около 15 КБ. Чтобы проверить это, я использую

curl -v --ntlm --negotiate -u {username}:{password} -d @myfile.txt http://localhost:8080/my-endpoint

, где myfile.txt составляет около 15 кБ. Сначала я предположил, что это проблема ограниченности Content-Length, и реализовал промежуточное программное обеспечение , предлагаемое в этом ответе , чтобы изменить ограничение; однако это была красная сельдь, поскольку промежуточное ПО вызывалось только для небольших запросов. Действительно, если я полностью избавлюсь от аутентификации, все будет работать как положено.

Более того, если я использую AuthenticationSchemes.Ntlm вместо AuthenticationSchemes.IntegratedWindowsAuthentication, тогда запрос curl проходит без каких-либо проблем, поэтому у меня есть это обходной путь, но мне все еще любопытно, что в первую очередь вызывает проблему, и если есть обходной путь, который не зависит от возврата к NTLM.

...