2012-02-12 28 views
7

Estoy tratando de construir las bases para mi aplicación y servidor de iPhone. Tengo usuarios que se registrarán y firmarán desde la aplicación de iPhone. En un inicio de sesión normal en el sitio web, el servidor http proporcionará cookies para permitir que las solicitudes subsiguientes del usuario permanezcan autenticadas. ¿Cómo debo manejar esto en el iPhone? ¿Debo simplemente enviar el usuario/contraseña cada vez que tengo un NSURLConnection GET o POST? Eso parece excesivo. O utilizo el marco ASIHTTPRequest para usar cookies. ¿Alguien puede señalarme en la dirección correcta para una implementación adecuada?¿Cómo manejar la persistencia de autenticación de usuario en IOS?

Gracias!

Respuesta

8

El envío de nombre de usuario y contraseña en cada solicitud no es muy bueno.

Puede usar cualquier cosa que desee para enviar cookies. Es solo otro encabezado HTTP. Pero eso plantea la pregunta de qué hay en la cookie. Depende de la arquitectura de su cliente/servidor. Las aplicaciones web usan claves de sesión porque tradicionalmente los clientes web no tenían ningún estado, por lo que el servidor de la aplicación tenía que hacerlo. Los clientes nativos pueden tener todo tipo de estado y, por lo tanto, generalmente no necesitan que el servidor lo proporcione.

Pero necesita autenticación. Para eso sirven OAuth y OAuth 2. Le permiten autenticarse una vez y luego usar tokens que pueden ser invalidados en el servidor. Algo así como sesiones muy largas sin datos.

Son un poco complicadas, pero existen bibliotecas de código abierto para las piezas del servidor y del cliente, o usted puede hacer las suyas propias. La mayor parte de la complicación es obtener el token original, que puede provocar un cortocircuito si es el propietario y el servidor. OAuth puede ser bastante complicado porque todas las solicitudes se firman con un token secreto. OAuth 2 puede ser tan simple como un secreto compartido (que requiere SSL) en una cookie.

+0

Respuesta muy detallada para un tema muy interesante. Gracias. – Francesco

+1

¿OAuth es exagerado si solo tengo 2 patas? Solo mi iPhone y servidor. ¿Funcionaría suficientemente un token de acceso único (guardado en el iPhone)? – Ryan

+0

Siempre y cuando haga todas sus solicitudes a través de SSL, sí. Eso es más o menos lo que OAuth 2 degenera en el flujo más simple. – smparkes

Cuestiones relacionadas