2012-07-02 21 views
12

Próbuję połączyć się z wystąpieniem witryny SharePoint Online za pośrednictwem aplikacji WPF. Znalazłem this article, który opisuje możliwe rozwiązanie, ale problem polega na tym, że konkretna instancja ma usługi Active Directory Federation Services (ADFS) z przodu i nie wiem, jak uzyskać token uwierzytelniający. (Nie mogę utworzyć certyfikatu dla mojej aplikacji do uwierzytelnienia w stosunku do adfs.)Autoryzacja roszczenia z ADFS

Ktoś, kto już to zrobił i może wesprzeć mnie za pomocą fragmentów kodu?

+0

Nie zrobiłem tego, ale mógłbym pomóc. Czy możesz opublikować gdzieś ślad Fiddlera wyodrębniony ze zwykłego logowania przez Internet do Office 365 za pomocą ADFS? – woloski

+0

@woloski Nie mogę tego opublikować ze względu na informacje o firmie w śledzeniu. Mógłbym je wysłać pocztą, jeśli podasz mi swój adres. (Możesz znaleźć mój w moim profilu ( – jwillmer

+0

Wysłałem Ci e-mail. Dostałeś go? – woloski

Odpowiedz

5

Znalazłem rozwiązanie i napisałem o tym artykuł. Umieściłem go również na github. Możesz znaleźć mój post na blogu wraz z linkiem github pod adresem my blog.

Mam nadzieję, że to pomoże ci jak bardzo mi pomógł :-)

+0

Czy możesz to opublikować ponownie? – retrography

+1

@retrography Blog jest wyłączony z powodu konserwacji, ale dodałem link do GitHub Jeśli nadal potrzebujesz wpisu na blogu napisz do mnie e-mail i wyślę go do ciebie ;-) – jwillmer

8

Grałem z Fiddler. Zasadniczo przepływ idzie tak:

  • Uzyskaj token SAML z ADFS
  • Post it do https://login.microsoftonline.com/login.srf (ciało powinno być wa=wsignin1.0, wresult=<requestsecuritytokenresponse>…token…</rstr> and wctx=MEST=0&LoginOptions=2&wa=wsignin1%2E0&rpsnv=2&ct=1343219880&rver=6%2E1%2E6206%2E0&wp=MBI&wreply=https%3A%2F%2Fspirit365%2Esharepoint%2Ecom%2F%5Fforms%2Fdefault%2Easpx&id=500046&cbcxt=mai&wlidp=1&guest=1&vv=910&mkt=EN-US&lc=1033&bk=1343219930
  • Przechwytywanie wejście ukryte nazwie "T" z Formularza
  • POST że „t” do /_layouts/Authenticate.aspx to powinno dać cookie FedAuth i rtFa

Od tego momentu jest taki sam jak kod tutaj:.. http://www.wictorwilen.se/Post/How-to-do-active-authentication-to-Office-365-and-SharePoint-Online.aspx

+0

Słyszałem, że celem plików cookie rtFa Wyloguj się z prośbą o HTTP i wyślij ją do dowolnej usługi sieciowej SharePoint? – surlac

3

Spędziłem dużo czasu, by w końcu zrozumieć, że obecnie. W celu uzyskania binarny token trzeba wysłać wiadomość w następującym formacie do Microsoft Online Security Token usługi (STS) Adres strony:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
    <s:Header> 
    <a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</a:Action> 
    <a:ReplyTo> 
     <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address> 
    </a:ReplyTo> 
    <a:To s:mustUnderstand="1">[toUrl]</a:To> 
    <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
     [assertion] 
    </o:Security> 
    </s:Header> 
    <s:Body> 
    <t:RequestSecurityToken xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust"> 
     <wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"> 
     <a:EndpointReference> 
      <a:Address>[url]</a:Address> 
     </a:EndpointReference> 
     </wsp:AppliesTo> 
     <t:KeyType>http://schemas.xmlsoap.org/ws/2005/05/identity/NoProofKey</t:KeyType> 
     <t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType> 
     <t:TokenType>urn:oasis:names:tc:SAML:1.0:assertion</t:TokenType> 
    </t:RequestSecurityToken> 
    </s:Body> 
</s:Envelope> 

potrzebna jest ta wiadomość wymienić żetony z następującymi wartościami:

[toUrl]: Adres URL witryny usługi Microsoft Online Security Token Service (STS).
[adres URL]: Adres URL witryny SP
[asercja]: jest tokenem XLM asercji, który otrzymałeś od usługi federacyjnej.

Po uzyskaniu t=... binarny żeton z XML odpowiedzi, można zakładać, że do SP default.aspx w celu uzyskania plików cookie.

+0

Próbowałem tego podejścia i otrzymałem pliki cookie Fedauth, ale kiedy przekierowuję do witryny SharePoint online, to znowu z prośbą o poświadczenia użytkownika. i jeśli robię wpis hosta jako "testO365.sharpoint.com "w moim lokalnym wtedy działa dobrze, wszelkie sugestie. –

+0

Hy, wiem, że to stary post, ale może ktoś może mi pomóc trudne.I udało mi się uzyskać asercja xml z naszego serwera adfs.Ale mogę go skopiować ( i wszystko w środku) do xml, jak podano, zawsze otrzymuję błąd z informacją "websso invalid asercja" (btw. wysyłam do (https://login.microsoftonline.com/extsts.srf) –