api - json_login - symfony token
Autenticación para una api de Symfony2(para uso de aplicaciones móviles) (3)
He desarrollado una API REST para mi aplicación Symfony2. Esta aplicación será utilizada por una aplicación móvil. Gran parte de la funcionalidad se realiza en el contexto del usuario autenticado actualmente, es decir:
$this->container->get(''security.context'')->getToken()->getUser()
Espero que la aplicación móvil pueda publicar en la acción de inicio de sesión como un formulario web tradicional. Si las credenciales se desprotegen, Symfony2 hace lo correcto y establece una cookie (¿esto funciona incluso en el contexto de una aplicación móvil que accede a una api?). Luego, las solicitudes de API posteriores de ese teléfono móvil (con suerte) funcionarán con el contenedor del servicio nativo symfony2 security.context.
¿Funcionaría esto? Necesito averiguar este proceso de autorización antes de llevar la API a los desarrolladores móviles. Si es posible, obviamente me gustaría poder usar el servicio nativo security.context en lugar de crear un nuevo sistema de autenticación para la api que usa xAuth o algo similar.
Gracias
Aquí está, Cómo crear un artículo impresionante de proveedor de autenticación personalizado .
Para la autenticación en una aplicación Symfony2 a través de la API, necesita usar: WS-Security
Creo que deberías hacerlo sin estado (sin cookie).
Tuve el mismo problema, lo que hice:
- en su app / config / security.yml, agregue:
security: ... firewalls: rest_webservice: pattern: /webservice/rest/.* stateless: true http_basic: provider: provider_name ...
- Ahora puedes hacer una solicitud a tu servicio web:
class AuthTest extends WebTestCase
{
public function testAuthenticatedWithWebservice()
{
$client = $this->createClient();
// not authenticated
$client->request(''GET'', ''/webservice/rest/url'');
$this->assertEquals(401, $client->getResponse()->getStatusCode());
// authenticated
$client->request(''GET'', ''/webservice/rest/url'', array(), array(), array(
''PHP_AUTH_USER'' => ''username'',
''PHP_AUTH_PW'' => ''password''
));
$this->assertEquals(200, $client->getResponse()->getStatusCode());
}
}
Sí, Marc, jules está apuntando a un ejemplo solo para mostrarte cómo probar la autenticación con http_basic.
Para ser RESTful, debe evitar el uso de cookies, de lo contrario, simplemente llámelo API. Sobre qué tan seguro es su sistema de autenticación, puede usar http_digest a través de https o una solicitud más segura y firmada con el enfoque api_key / api_secret.
Eche un vistazo aquí http://wiki.zanox.com/en/RESTful_API_authentication