Pregunta

Mi equipo y yo estamos trabajando actualmente en un proyecto bastante grande.Estamos trabajando en un juego online, al que se podrá acceder (por el momento), de dos formas:-A través de un navegador web, una aplicación JavaScript completa (del lado del cliente), Ajax completo (lo que básicamente significa que la interfaz de usuario se administrará en el lado del cliente JS).-A través de una aplicación de iPhone (la interfaz de usuario será gestionada por la propia aplicación).

Entre las dos aplicaciones diferentes, la lógica central sigue siendo la misma, por lo que creo (podría estar equivocado) que la mejor solución sería crear un servicio web (si es posible utilizando estándares como RESTful o Rest) capaz de realizar todo lo necesario. operaciones.

Siguiendo esta lógica, me he encontrado con un problema:la autenticación y gestión de la identidad del usuario.Esto plantea un problema ya que los usuarios de las aplicaciones deben estar autenticados para realizar determinadas operaciones.

He investigado la seguridad de WS, pero esto obviamente requiere que las contraseñas se almacenen sin cifrar en el servidor, ¡lo cual no es aceptable!Luego miré Oauth, pero a primera vista me pareció mucho trabajo configurar y no se adaptaba particularmente a mis necesidades (la forma en que se deben aceptar las solicitudes no me agrada, ya que será mi solicitud y solo mi solicitud). utilizando el servicio web, no cualquier aplicación externa).He leído y escuchado sobre muchas otras formas de hacer lo que quiero, pero para ser honesto, estoy un poco confundido y no sé qué información es confiable y cuál no.

Me gustaría señalar que estoy usando Symfony2 para el backend y jquery para el JavaScript del lado del cliente.Además me gustaría una respuesta detallada, paso a paso, porque realmente estoy confundido con todo lo que he leído y oído.

Gracias por su tiempo y espero que alguien pueda ayudarme ya que es bastante urgente.

Buenas noches

¿Fue útil?

Solución

No estoy completamente seguro de si esto responde a su solicitud, pero dado que la interfaz de usuario siempre se manejará en el lado del cliente, creo que podría utilizar la autenticación HTTP sin estado:

Este es el firewall en security.yml:

security:
    firewalls:
        api:
            pattern: ^/api/ # or whatever path you want
            http_basic: ~
            stateless: true

Y luego, la idea básicamente es que en el servidor, utilice sus proveedores de usuario normales, codificadores y todo eso para lograr la máxima seguridad, y en el cliente, envíe los encabezados de autenticación HTTP, por ejemplo, en jQuery:

$.ajax("...", {
    username: "Foo",
    password: "bar"
});

Tenga en cuenta que, dado que la autenticación no tiene estado (nunca se crea ninguna cookie), los encabezados deben enviarse con cada solicitud, pero, supongo, dado que la aplicación es casi en su totalidad del lado del cliente, esto no es un problema.

También puedes consultar el manual de seguridad de symfony2 para obtener más información sobre cómo configurar la autenticación HTTP.También asegúrese de forzar el acceso HTTPS en su ACL, para que las solicitudes que contienen las credenciales estén seguras (requires_channel: https en sus definiciones de ACL).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top