Мое приложение взаимодействует с внутренним веб-интерфейсом, который требует аутентификации.
Когда я отправляю запрос, я получаю запрос 401, как и ожидалось, происходит рукопожатие, повторно отправленный аутентифицированный запрос и все прекращается.
Однако я знаю, что требуется auth. Почему я должен ждать вызова? Могу ли я заставить запрос отправлять учетные данные в запросе первый?
Моя генерация запросов выглядит так:
private static HttpWebRequest BuildRequest(string url, string methodType)
{
var request = HttpWebRequest.CreateHttp(url);
request.PreAuthenticate = true;
request.AuthenticationLevel = AuthenticationLevel.MutualAuthRequested;
request.Credentials = CredentialCache.DefaultNetworkCredentials;
request.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
request.ContentType = CONTENT_TYPE;
request.Method = methodType;
request.UserAgent = BuildUserAgent();
return request;
}
Даже с этим кодом заголовок auth не входит в первоначальный запрос.
Я знаю, как включить информацию об аутентификации с базовым.... что я хочу сделать, это использовать Windows Auth для пользователя, выполняющего приложение (поэтому я не могу сохранить пароль в файле конфигурации).
UPDATE Я также попытался использовать HttpClient
и собственное свойство .Credentials
с тем же результатом: в начальный запрос не добавлен заголовок auth.
Единственный способ получить заголовок auth в том, чтобы взломать его вручную, используя базовую аутентификацию (которая не будет летать для этого прецедента)