2011-03-07 32 views
5

He leído que una buena manera de escribir servicios web para consumir desde aplicaciones móviles es evitar SOAP (demasiado detallado) y usar REST; en muchos ejemplos de REST, he visto que es mejor evitar las sesiones debido a la naturaleza apátrida de REST ... pero, ¿cómo puedo garantizar la seguridad al invocar mi servicio web? Me gustaría hacer una llamada de "inicio de sesión" y pasar un session_id/token a la próxima llamada al servicio web ... ¿Cómo puedo hacerlo?¿Cómo manejar la autenticación en el servicio web PHP REST?

Respuesta

3

Puede pasar token de usuario (y la sesión, o cualquier otro dato de autenticación si lo necesita) en una solicitud JSON como:

{"auth": {"session_id": "abc", "token":"123"}, 
"data": "your request data" 
} 

Si usted está loco por la seguridad puede generar un nuevo token después de cada inicio de sesión de usuario e incluso tiempo de vida para tokens.

+0

¿Cómo funciona? que va con RESTfullness? ¿No solo mueve el problema? – xtofl

4

La forma más limpia sería usar la autenticación HTTP. Si bien eso no pasaría por el modo session + sessionid que mencionó, sería mucho más limpio y directo (las llamadas API no están relacionadas en otras llamadas API y los clientes no necesitan esperar tiempos de espera de sesión, etc.)

+0

Pero, ¿cómo implementar eso en su servidor web? Quiero decir, ¿qué debo hacer en mi servidor web Linux Apache para la autenticación HTTP? –

+0

Nada. Puede hacerlo exclusivamente en PHP marcando los campos relevantes en la matriz '$ _SERVER' y enviando un encabezado 401 si no están presentes o no coinciden con un usuario válido. – ThiefMaster

Cuestiones relacionadas