.NET, вызывающая веб-службу SharePoint, получает неавторизованное исключение HTTP 401 - PullRequest
5 голосов
/ 10 февраля 2011

Я пытаюсь вызвать службу списков SharePoint, чтобы получить определение списка и данные.Сайт SharePoint - это мои компании, но я не контролирую его.Вот все, что я знаю о безопасности сервера:

Сервер - HTTPS: // Сервер принимает учетные данные Windows Active Directory при входе в систему ...

Я пробовал Basic, Digest, CredentialCache, простоNetworkCredential, UnsafeAuthenticatedConnectionSharing, UseDefaultCredentials, PreAuthenticate ... не уверен в правильности конфигурации ...

Я получаю ошибку HTTP 401 Unauthorized.

                Uri url = new Uri(baseAddress + "/_vti_bin/Lists.asmx", UriKind.Absolute);
                Lists.Lists client = new Lists.Lists();

                // sometimes works
                CredentialCache cache = new CredentialCache();
                cache.Add(url, "NTLM", new NetworkCredential(context.UserName, context.Password, context.Domain));
                client.UseDefaultCredentials = false;
                client.Credentials = CredentialCache.DefaultCredentials;
                // doesn't work ever
                //client.Credentials = new NetworkCredential(context.UserName, context.Password, context.Domain);
                //client.PreAuthenticate = true;
                client.UnsafeAuthenticatedConnectionSharing = true;
                client.Url = url.AbsoluteUri;
                listData = client.GetList(listName).OuterXml;

Ответы [ 2 ]

1 голос
/ 28 июня 2016

Мое веб-приложение работает в смешанном режиме аутентификации (утверждает NTLM + FBA), у меня работает приведенный ниже код.

HttpWebRequest req = WebRequest.CreateHttp("https://example.com/");
req.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f"); //login with windows account
req.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequired;
req.Credentials = new NetworkCredential(“username", “password", "domain”); 
//this also works
//req.Credentials = CredentialCache.DefaultNetworkCredentials; 
1 голос
/ 10 февраля 2011

Этот код выполняется локально на том же сервере, что и SharePoint - если это так, то, вероятно, локальная проверка обратной связи .

Если нет, то вам нужно дать некоторые точные сведения - использует ли ваш сайт встроенную аутентификацию (и если да, то через NTLM или Kerberos) или Basic или Forms?

Также - что произойдет, есливы пытаетесь использовать эту веб-службу с помощью браузера (для получения WSDL) или инструмента тестирования веб-службы, такого как SoapUI или , одна из многих альтернатив

...