2012-07-02 47 views
12

Tôi cố kết nối với cá thể SharePoint Online thông qua ứng dụng WPF. Tôi đã tìm thấy this article mà ghi rõ một giải pháp có thể nhưng vấn đề là trường hợp cụ thể có một dịch vụ liên kết Active Directory (ADFS) ở phía trước và tôi không biết làm thế nào để có được auth-token. (Tôi không thể tạo chứng chỉ cho ứng dụng của mình để xác thực lại các adfs.)Xác nhận quyền sở hữu từ ADFS

Bất kỳ ai đã thực hiện việc này và có thể hỗ trợ tôi với một số đoạn mã?

+0

Tôi chưa làm điều này nhưng tôi có thể trợ giúp. Bạn có thể đăng ở đâu đó một dấu vết Fiddler được trích xuất từ ​​đăng nhập dựa trên web thông thường vào Office 365 bằng ADFS không? – woloski

+0

@woloski Tôi không thể đăng bài này vì thông tin của công ty trong dấu vết. Tôi có thể gửi nó cho bạn nếu bạn cho tôi địa chỉ của bạn. (Bạn có thể tìm thấy tôi trong hồ sơ của tôi ( – jwillmer

+0

Tôi đã gửi cho bạn một email. Bạn có nhận được nó không? – woloski

Trả lời

5

Tôi đã tìm thấy giải pháp và tạo một bài đăng về nó. Tôi cũng đặt nó trên github. Bạn có thể tìm bài đăng trên blog của tôi cùng với liên kết github tại my blog.

Tôi hy vọng điều này sẽ giúp bạn nhiều như nó đã giúp tôi :-)

+0

Bạn có thể đăng lại điều này không? – retrography

+1

@retrography Blog ngừng hoạt động để bảo trì nhưng tôi đã thêm liên kết GitHub Nếu bạn vẫn cần bài đăng trên blog viết cho tôi một email và tôi gửi cho bạn ;-) – jwillmer

8

Tôi đã chơi với Fiddler. Về cơ bản các dòng chảy đi như thế này:

  • Nhận một mã thông báo SAML từ ADFS
  • bài viết nó để https://login.microsoftonline.com/login.srf (cơ thể nên 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
  • Capture đầu vào ẩn có tên là "t" từ Mẫu
  • POST "t" để /_layouts/Authenticate.aspx Điều đó sẽ cung cấp cho bạn các tập tin cookie FedAuth và rtFa

Từ quan điểm rằng đây là giống như mã ở đây:.. http://www.wictorwilen.se/Post/How-to-do-active-authentication-to-Office-365-and-SharePoint-Online.aspx

+0

Tôi nghe nói rằng mục đích của rtFa cookies Đính kèm rtFa vào HTTP-request và gửi nó tới bất kỳ dịch vụ web SharePoint nào? – surlac

3

Tôi đã dành rất nhiều thời gian để cuối cùng tìm ra điều đó. Để có được Token nhị phân bạn cần phải đăng một thông điệp trong các định dạng sau đây để Microsoft Online Security Mã Service (STS) URL của trang web:

<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> 

Thông báo này là cần thiết để thay thế các thẻ với các giá trị sau:

[toUrl]: URL trang web dịch vụ mã thông báo bảo mật trực tuyến Microsoft (STS).
[url]: URL trang web SP của bạn
[xác nhận]: Xác nhận mã thông báo XLM bạn đã nhận được từ dịch vụ Liên kết của bạn.

Sau khi bạn nhận được mã thông báo nhị phân t=... từ XML phản hồi, bạn có thể đăng bài đó lên SP default.aspx để nhận cookie.

+0

Tôi đã thử phương pháp này và nhận cookie Fedauth, nhưng khi tôi chuyển hướng đến trang web SharePoint trực tuyến thì nó lại yêu cầu thông tin đăng nhập của người dùng. và nếu tôi đang tạo một mục lưu trữ là "testO365.sharpoint.com "trong địa phương của tôi sau đó làm việc tốt của nó, bất cứ đề nghị –

+0

Hy, tôi biết nó là một bài cũ. Nhưng có lẽ ai đó có thể giúp tôi khó khăn. Tôi quản lý để có được xác nhận xml từ máy chủ adfs của chúng tôi. Nhưng nếu tôi sao chép nó (các và bất cứ điều gì bên trong) vào xml như đã nêu tôi nhận được luôn luôn là lỗi nói "websso xác nhận không hợp lệ" (btw. Tôi đăng lên (https://login.microsoftonline.com/extsts.srf) –

Các vấn đề liên quan