Вопрос

У меня есть этот код:

using ( var site = new SPSite( myUrl ) ) {
    using ( var web = site.AllWebs[0] ) {
        // read-only operations
    }
}

"myUrl" - это верхний URL домена в WSS 3.0.Проверка подлинности настроена на Windows.Если я запущу этот код из командной строки под учетной записью "external_app_user", все будет в порядке.Но если я запущу этот код из webservice (вне WSS webapplication), то результатом будет http-ответ "401 НЕСАНКЦИОНИРОВАННЫЙ" вместо ответа SOAP.Это странно, потому что этот код находится в блоке "try-catch", и если возникло какое-либо исключение, я вернул собственное сообщение об ошибке в ответе SOAP.

Код выполняется на том же компьютере, что и WSS.

Если я запускаю веб-сервис из webbroser на компьютере, на котором запущен веб-сервис, отображается классическая форма входа в Windows.Если я запускаю веб-сервис из webbrowser на другом компьютере, я получаю только HTTP-ответ "401 НЕСАНКЦИОНИРОВАННЫЙ".

Веб-служба запущена под правильной учетной записью.Эта учетная запись имеет доступ к WSS (протестирована через веб-сайт SharePoint).Если я попытаюсь получить "Систему.Безопасность.Принципал.WindowsIdentity.GetCurrent().Name" возвращается правильное имя пользователя.

В web.config задано "<identity impersonate="true" userName="_my_username_" password="_my_password_" />.

У кого-нибудь есть идеи, в чем дело?

Это было полезно?

Решение 3

Другие советы

Причина, по которой вы не можете перехватить 401, заключается в том, что SharePoint имеет пользовательскую обработку для этого исключения, см. Этот поток: Не удается перехватить сообщение об ошибке "Отказано в доступе к SharePoint (включая предложение, как его отключить).

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top