8

पर शेयरपॉइंट को प्रमाणीकरण का दावा करता है मैंने आईफोन के लिए एक साधारण शेयरपॉइंट क्लाइंट ऐप बनाया है, जिसके लिए कुछ शेयरपॉइंट वेब सेवाओं (मुख्य रूप से /_vti_bin/Lists.asmx) तक पहुंच की आवश्यकता है। मुझे Office365 जैसे नए SharePoint वातावरण पर ऐसा करने का तरीका पता लग रहा है।आईफोन

पुराने बीपीओएस पर्यावरण के साथ फॉर्म-आधारित प्रमाणीकरण होने के साथ, मैं 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 Apps के साथ के अनुसार, यह उन HTTPOnly FedAuth Wininet.dll का उपयोग कर कुकीज़ पुनः प्राप्त करना संभव लगता है, लेकिन मुझे लगता है कि है कि iPhone पर उपलब्ध नहीं है?

फिर, मैंने देखा SharePlus अनुप्रयोग UIWebView पेश और ब्राउज़र स्क्रीन पर पहली बार अपने Office365 खाते में प्रवेश करने ("के रूप में सक्षम करने से रिमोट प्रमाणीकरण के लिए उपयोगकर्ता लॉगिन" लेख की धारा ऊपर से समझाया गया है जो एक ही अवधारणा है) उपयोगकर्ता हो रही।

तो, मैं अगर मैं किसी भी तरह UIWebView के माध्यम से Office365 खाते में प्रवेश करके उन FedAuth कुकीज़ के लिए उपयोग हो सकता है देखने के लिए कोशिश की, लेकिन [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies] अंदर आने नहीं दिया मुझे पहुँच HTTPOnly कुकीज़।

क्या आईफोन ऐप्स पर दावों के प्रमाणीकरण को प्राप्त करने के लिए नामित इंटरमीडिएट .NET सेवा की आवश्यकता के बिना प्रमाणीकरण को संभालने के लिए कोई तरीका है, या उपयोगकर्ता को उन कुकीज़ पर HTTP केवल संपत्ति बंद करने की आवश्यकता है?

क्षमा करें, मैं शेयरपॉइंट के लिए बहुत नया हूं इसलिए मैं सही दिशा को भी देख नहीं सकता हूं, लेकिन मैं आईफोन ऐप्स पर काम करने के लिए दावा प्रमाणीकरण प्राप्त करने की किसी भी सलाह की सराहना करता हूं। अग्रिम में धन्यवाद!

उत्तर

2

मैंने इसे स्वयं समझ लिया है। अपनी मूर्खता और अधीरता पर हंसना पड़ा।

सबसे पहले, [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies] डीओ आपको HTTP केवल कुकीज़ तक पहुंचने देता है। हालांकि, जब उपयोगकर्ता UIWebView पर Office 365 में लॉग ऑन करता है, (void)webViewDidFinishLoad:(UIWebView *)webView प्रतिनिधि विधि को कई बार बुलाया जाता है, इसलिए आपको कुकीज़ जार में FedAuth दिखाई देने तक बस प्रतीक्षा करने की आवश्यकता होती है।

यहां मेरा (void)webViewDidFinishLoad:(UIWebView *)webView कार्यान्वयन है;

- (void)webViewDidFinishLoad:(UIWebView *)webView { 

    NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
    NSArray *cookiesArray = [storage cookies]; 
    for (NSHTTPCookie *cookie in cookiesArray) { 
     if ([[cookie name] isEqualToString:@"FedAuth"]) { 
      /*** DO WHATEVER YOU WANT WITH THE COOKIE ***/ 
      break; 
     } 
    } 
} 

एक बार जब आप कुकी प्राप्त किया है, तो आप सिर्फ (void)setAllHTTPHeaderFields:(NSDictionary *)headerFields विधि का उपयोग कर जब आप SharePoint वेब सेवाओं फोन NSURLRequest है कि संलग्न करने के लिए की जरूरत है।

उम्मीद है कि यह किसी की मदद करेगा।

+0

बहुत बढ़िया! @ user1657506, क्या UIWebView लॉन्च किए बिना FedAuth टोकन प्राप्त करना संभव है? 2 टेक्स्ट फ़ील्ड (उपयोगकर्ता नाम/पासवर्ड) के साथ UIView बनाएं, और हुड के नीचे टोकन प्राप्त करने के लिए पहचान प्रदाता (Google, Office 365, आदि) को HTTP-अनुरोध भेजें? – surlac

+0

देर से उत्तर x के लिए खेद है (निष्कर्ष पर कूदते हुए, यह संभव है लेकिन बहुत मुश्किल है। यह साइट आपको एक विचार दे सकती है; [विक्टर विलेन - शेयरपॉइंट एमसीए, एमसीएम और एमवीपी] (http://www.wictorwilen.se/Post /How-to-do-active-authentication-to-Office-365-and-SharePoint-Online.aspx)।लंबी कहानी छोटी है, आपको एसटीएस को कॉल करने और कुकीज़ को स्वयं प्राप्त करने की आवश्यकता है। मैंने इसे स्वयं करने की कोशिश की है लेकिन छोड़ दिया है ताकि आपको अधिक जानकारी न दे ... ऐसा लगता है कि .NET के लिए संसाधन हैं जो इस प्रक्रिया को थोड़ा आसान बनाता है, इसलिए प्रमाणीकरण को संभालने के लिए .NET के साथ अपना स्वयं का webservice बनाना आदि। एक विकल्प हो सकता है। – user1657506