我爲iPhone製作了一個簡單的SharePoint客戶端應用程序,它需要訪問某些SharePoint Web服務(主要是/_vti_bin/Lists.asmx)。我在解決如何在較新的SharePoint環境(如Office365)上執行此操作時遇到問題。在iPhone上向SharePoint索賠身份驗證
通過使用基於表單的身份驗證的舊BPOS環境,我可以通過簡單實現didReceiveAuthenticationChallenge
方法來驗證這些服務;
-(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
NSURLCredential *newCredential = [NSURLCredential credentialWithUser:username
password:password
persistence:NSURLCredentialPersistenceForSession];
[[challenge sender] useCredential:newCredential
forAuthenticationChallenge:challenge];
}
這顯然沒有任何工作更具有聲明身份驗證SharePoint網站,所以我做了一些研究,發現我需要FedAuth
餅乾被附在請求。
http://msdn.microsoft.com/en-us/library/hh147177.aspx
根據這篇文章,與.NET應用程序,它似乎可以檢索使用的wininet.dll那些中HTTPOnly FedAuth
餅乾,但我想這是不提供iPhone?
然後,我看到SharePlus應用呈現UIWebView
並獲得用戶首先登錄到他們的Office365帳戶的瀏覽器屏幕上(這是相同的概念爲「啓用用戶登錄遠程認證」上述文章的部分解釋)。
因此,我試圖通過UIWebView
登錄到Office365帳戶來以某種方式訪問這些FedAuth
Cookie,但[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]
不允許我訪問HTTPOnly cookie。
有沒有一種方法可以實現iPhone應用程序的聲明身份驗證,而不需要指定的中間.NET服務來處理身份驗證,或者要求用戶關閉這些cookie的HTTPOnly屬性?
對不起,我對SharePoint非常陌生,所以我可能甚至沒有看到正確的方向,但我會很感激任何關於獲得索賠身份驗證在iPhone應用程序上工作的建議。提前致謝!
太棒了! @ user1657506,是否可以在不啓動UIWebView的情況下獲取FedAuth令牌?創建帶有2個文本字段(用戶名/密碼)的UIView,併發送HTTP請求到身份提供商(Google,Office 365等)以獲得令牌下的令牌? – surlac
對不起,延遲迴復x(跳到結論,這是可能的,但很難,這個網站可能會給你一個主意; [WictorWilén - SharePoint MCA,MCM和MVP](http://www.wictorwilen.se/Post /How-to-do-active-authentication-to-Office-365-and-SharePoint-Online.aspx)。長話短說,您需要致電STS並自行獲取曲奇。我自己嘗試過,但放棄了,所以不能給你很多細節......似乎有.NET的資源,使這個過程稍微簡單一些,所以創建自己的Web服務與.NET來處理身份驗證等,可能是一個選擇。 – user1657506