401 Ошибка при использовании HTTPWebRequest с проверкой подлинности Active Directory в DotNetNuke - PullRequest
2 голосов
/ 17 ноября 2009

Кто-нибудь успешно использовал System.Net.HTTPWebRequest с аутентификацией Active Directory на веб-сайте DotNetNuke? Я осмотрелся и нашел несколько ссылок на HTTPWebRequest и аутентификацию Active Directory, но ни одна из них, похоже, не имеет особого соуса. Я попробовал бесчисленные варианты атрибутов / методов, но безуспешно.

Средой разработки, в которой я работаю, является Windows 2003 Server, который действует как резервный PDC и работает под управлением IIS 6.0. Веб-сайт работает под управлением DotNetNuke 4.9.4 с аутентификацией Active Directory (также пробовал в DNN 5.1.4) и отлично работает для входа в систему. Однако один из модулей выполняет HTTPWebRequest для обработки файлов, и он завершается с ошибкой 401 Unauthorized.

Самый базовый код, который я пробовал:

Dim webReq As HttpWebRequest = DirectCast (WebRequest.Create (sURL), HttpWebRequest) webReq.Timeout = 30000 Dim credential As New NetworkCredential (sUserName, sPassword) Dim credentialCache как новый CredentialCache () credentialCache.Add (Новый Uri (sURL), "NTLM", учетные данные) webReq.Credentials = credentialCache webReq.KeepAlive = True webReq.Accept = " / "

Я попытался добавить PreAuthenticate.

Я также пытался модифицировать раздел реестра, включая этот:

Изменения в аутентификации NTLM для HTTPWebRequest в версии 3.5 SP1

Все безуспешно. Каждый раз, когда я получаю страшные 401:

Удаленный сервер возвратил ошибку: (401) Не авторизован. в System.Net.HttpWebRequest.GetResponse ()

Я также создал простую страницу aspx со следующим кодом: Dim requestUrlString As String = "http://adtestsite/somepage.aspx" Dim webReq As HttpWebRequest = DirectCast (WebRequest.Create (requestUrlString), HttpWebRequest) Dim nc As New NetworkCredential («Имя пользователя», «Пароль», «Имя нашего домена»)

    Dim webResponse As System.Net.HttpWebResponse = DirectCast(webReq.GetResponse, HttpWebResponse)
        If webResponse.StatusCode = HttpStatusCode.OK Then
            Response.Write("Yes!")
        Else
            Response.Write("NO!")
        End If

Я получаю "НЕТ!" каждый раз с ошибкой 401.

Я бью головой об стену на этом. Если у кого-нибудь есть рецепт секретного соуса, ПОЖАЛУЙСТА, дайте мне знать!

1 Ответ

0 голосов
/ 17 ноября 2009

К какой платформе ОС сервера, к которому подключается HttpWebRequest?

...