8

He hecho un simple cliente de SharePoint App para iPhone, que requieren el acceso a algunos servicios web de SharePoint (principalmente /_vti_bin/lists.asmx). Tengo problemas para descubrir cómo hacerlo en un entorno de SharePoint más reciente, como Office365.autenticación de notificaciones de SharePoint en el iPhone

Con el antiguo entorno BPOS con autenticación basada en formularios, pude autenticar esos servicios simplemente implementando el método didReceiveAuthenticationChallenge;

-(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { 
NSURLCredential *newCredential = [NSURLCredential credentialWithUser:username 
               password:password 
              persistence:NSURLCredentialPersistenceForSession]; 
[[challenge sender] useCredential:newCredential 
     forAuthenticationChallenge:challenge]; 
} 

Esto, obviamente, no funciona más con sitios de SharePoint con autenticación de notificaciones, por lo que hizo una investigación y descubrió que necesito FedAuth las cookies que se adjunta a la solicitud.

http://msdn.microsoft.com/en-us/library/hh147177.aspx

De acuerdo con este artículo, con .NET Aplicaciones, parece posible recuperar esos HTTPOnly FedAuth galletas utilizando WinInet.dll, pero supongo que no está disponible en el iPhone?

Entonces, vi SharePlus App presentar UIWebView y conseguir de usuario para iniciar sesión en su cuenta Office365 por primera vez en la pantalla del navegador (que es el mismo concepto que se explica en la sección del artículo anterior "Activación de sesión de usuario para autenticación remota").

lo tanto, traté de ver si de alguna manera puedo obtener acceso a esos FedAuth galletas ingresando a Office365 cuenta a través de UIWebView, pero [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies] no me deja acceder HTTPOnly cookies.

¿Hay una manera de lograr la autenticación de notificaciones de aplicaciones para el iPhone sin necesidad de servicio .NET intermedia designada para el manejo de autenticaciones, o que requiera el usuario para apagar HTTPOnly propiedad sobre esas galletas?

Lo sentimos, soy muy nuevo en SharePoint, así que incluso pueden no estar buscando en la dirección correcta, pero apreciaría cualquier consejo en conseguir la autenticación de notificaciones para trabajar en aplicaciones para el iPhone. ¡Gracias por adelantado!

Respuesta

2

He descubierto esto por mi cuenta. Tuve que reírme de mi propia estupidez e impaciencia.

En primer lugar, [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies] DO le permiten acceder a las cookies HTTPOnly. Sin embargo, cuando el usuario inicia sesión en Office 365 en el UIWebView, (void)webViewDidFinishLoad:(UIWebView *)webView método de delegado recibe varias llamadas, por lo que solo debe esperar hasta que FedAuth aparezca en el contenedor de cookies.

Aquí es mi (void)webViewDidFinishLoad:(UIWebView *)webView aplicación;

- (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; 
     } 
    } 
} 

Una vez que haya obtenido la cookie, sólo tiene que añadir que a la NSURLRequest usando (void)setAllHTTPHeaderFields:(NSDictionary *)headerFields método cuando se llama a los servicios web de SharePoint.

Espero que esto ayude a alguien.

+0

¡Impresionante! @ user1657506, ¿es posible obtener el token de FedAuth sin iniciar UIWebView? Cree UIView con 2 campos de texto (nombre de usuario/contraseña) y envíe una solicitud HTTP al proveedor de identidad (Google, Office 365, etc.) para obtener el token bajo el capó. – surlac

+0

Lo siento por última contestación x (Saltando a la conclusión, es posible pero muy difícil Este sitio le puede dar una idea;. [Wictor Wilén - SharePoint MCA, MCM y MVP] (http://www.wictorwilen.se/Post /How-to-do-active-authentication-to-Office-365-and-SharePoint-Online.aspx).Para resumir, necesita llamar a STS y obtener las cookies usted mismo. Lo intenté yo mismo, pero renuncié, así que no puedo darte muchos detalles ... Parece que hay recursos para .NET que hacen que este proceso sea un poco más fácil, por lo que creas tu propio servicio web con .NET para gestionar la autenticación, etc., podría ser una opción. – user1657506

Cuestiones relacionadas