Можно ли заставить HttpWebRequest включать учетные данные Windows, не дожидаясь вызова 401?
Мое приложение взаимодействует с внутренним веб-API, который требует аутентификации.
Когда я отправляю запрос, я получаю вызов 401, как и ожидалось, рукопожатие происходит, аутентифицированный запрос повторно отправляется, и все продолжается нормально.
Однако язнать что требуется авторизация. Почему я должен ждать вызова? Могу ли я заставить запрос отправить учетные данные впервый запрос?
Моя генерация запроса выглядит так:
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 пользователя, выполняющего приложение (поэтому я не могу сохранить пароль в файле конфигурации).
ОБНОВИТЬ Я также пытался использоватьHttpClient
и свой.Credentials
свойство с тем же результатом: заголовок auth не добавляется к первоначальному запросу.
только способ, которым я мог получить заголовок аутентификации, состоял в том, чтобы взломать его вручную, используяосновной аутентификация (которая не будет работать в этом случае)