2011-02-10 9 views
5

Próbuję wywołać usługę listy programu SharePoint, aby uzyskać definicję listy i dane. Witryna SharePoint to moje firmy, ale nie mam nad nią kontroli. Oto wszystko, co wiem o bezpieczeństwo serwera:. Wywoływanie .NET Usługa sieci Web programu SharePoint otrzymuje nieautoryzowany wyjątek HTTP 401

Server jest https: // Server akceptuje poświadczeń Windows Active Directory po zalogowaniu ...

Próbowałem Basic, Digest CredentialCache, tylko NetworkCredential, UnsafeAuthenticatedConnectionSharing , UseDefaultCredentials, PreAuthenticate ... nie wiesz, co to jest poprawna konfiguracja ...

Otrzymałem błąd 401 nieautoryzowanego HTTP.

   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; 
+1

Po przejściu do witryny w przeglądarce wyjaśnij, w jaki sposób logujesz się normalnie. – djeeg

+1

Mam dokładnie ten sam problem. Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? – alf

Odpowiedz

1

Czy ten kod działa lokalnie na tym samym serwerze co SharePoint - jeśli tak, to jej chyba local loopback check.

Jeśli nie, musisz podać szczegółowe informacje - czy Twoja witryna korzysta z Zintegrowanego uwierzytelniania (a jeśli tak, to za pośrednictwem NTLM lub Kerberos) lub Basic lub Forms?

Również - co się dzieje, jeśli starają się wykorzystać tę usługę WWW za pomocą przeglądarki (aby uzyskać WSDL) lub usługi web testową narzędzia takiego jak SoapUI lub one of the many alternatives

1

Moja aplikacja internetowa jest tryb uwierzytelniania mieszany (należności NTLM + FBA), poniższy kod działa dla mnie.

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;