7

Chcę spożywać dane programu SharePoint na platformę .Net. Korzystam już z usług OOTB SharePoint, takich jak Lists.asmx, Webs.asmx i search.asmx w tym celu. Pomyślnie dodano obsługę uwierzytelniania opartego na formularzach za pomocą usługi Authentication.asmx. Teraz chcę zapewnić obsługę Office 365 SharePoint online. W tym celu mam demo witryny SharePoint Online, nad którą pracuję. problem, jestem stoi to kiedy używać metody tryb Authentication.asmx otrzymuję „Formularze” w odpowiedzi:Uwierzytelnianie usługi Office 365 SharePoint Online OOTB

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 
    <ModeResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/"> 
     <ModeResult>Forms</ModeResult> 
    </ModeResponse> 
</soap:Body> 
</soap:Envelope> 

Jednak kiedy używam Login.asmx i przekazać prawidłową nazwę użytkownika i hasło, otrzymuję „PasswordNotMatch” błąd, te same poświadczenia działają poprawnie w przeglądarce.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 
    <LoginResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/"> 
     <LoginResult> 
     <ErrorCode>PasswordNotMatch</ErrorCode> 
      <TimeoutSeconds>0</TimeoutSeconds> 
     </LoginResult> 
    </LoginResponse> 
</soap:Body> 
</soap:Envelope> 

Uwaga: - Działa to doskonale w przypadku witryny FBA non Office 365 SharePoint.

Czy ktoś mógłby mi pomóc we wdrażaniu obsługi usług OOTB usługi Office 365 SharePoint Online?

Odpowiedz

6

Szukałem podobnego pomysłu, a this thread był niezwykle pomocny. W rzeczywistości mają próbkę usługi sieciowej za pomocą PInvoke, może ci to pomóc.

Edytuj: moje wyszukiwanie doprowadziło mnie do this other post by Wictor Wilen, ale próbuję teraz uniknąć klienta.

Edycja2: W porządku, ale działało. Używając kodu z Wictor powyżej, pobrałem jego przykładowe rozwiązanie i przeniosłem "MsOnlineClaimsHelper.cs" i "WcfClientContracts.cs" do mojego projektu, będę błąkał się z tym, co jest naprawdę używane z tych plików później. Zmieniłem je tylko, aby usunąć odwołania ClientOM, w tym metodę clientContext_ExecutingWebRequest.

w próbce aplikacji MVC3 lub aplikacji konsoli:

MsOnlineClaimsHelper claimsHelper = new MsOnlineClaimsHelper("https://my365site.sharepoint.com/sites/enterprise/", "[email protected]", "secret"); 

using (var lists = new SharePointLists.Lists()) 
{ 
    lists.Url = @"https://my365site.sharepoint.com/sites/enterprise/_vti_bin/lists.asmx"; 
    lists.CookieContainer = claimsHelper.CookieContainer; 
    var listCol = lists.GetListCollection(); 
    ViewBag.Message = listCol.InnerXml; 
    //Console.Write(listCol.InnerXml); 
} 
+1

@Kuldeep Shige, jak bym się uwierzytelniony z formą typem w oparciu o Office 365 przy użyciu SOAP? Próbowałem wysłać prawidłowe żądanie SOAP z nazwą użytkownika/hasłem do "Authentication.asmx", ale dostałem "PasswordNotMatch". – surlac

+1

Nie wiesz, czy to proste hasło? Przyjrzałbym się kodowaniu, a następnie spróbowałem uzyskać dokumenty, aby sprawdzić, czy spodziewają się hasła lub jego zakodowanej wersji. –

+1

@ F.Aquino: Kod Wictors nie działa w kilku przypadkach Office 365. Otrzymuję ten błąd "Odmowa dostępu." Przed otwarciem plików w tej lokalizacji, musisz najpierw przejść do strony internetowej i wybrać opcję automatycznego logowania. " – Syeda

Powiązane problemy