play framework for application rest playframework playframework-2.2 securesocial

rest - for - Exponer las llamadas de descanso de Play Framework seguras a través de la aplicación securesocial a móvil



play framework web server (2)

Me gustaría exponer mis llamadas a Play Framework REST a clientes que no sean mi aplicación de reproducción.

Me gustaría que una aplicación móvil llame a esas llamadas de descanso aseguradas.

Hice una pregunta sobre SO a principios de año y obtuve una respuesta, pero esto solo funciona para OAuth2 y solo uso OAuth1.

Mis preguntas son:

  1. ¿Es una buena idea exponer mis llamadas REST aseguradas por Securesocial en mi aplicación PlayFramework a clientes que no son web como las aplicaciones móviles?
  2. ¿Hay alguna manera de hacer esto usando Securesocial para OAuth1?
  3. ¿Hay algún ejemplo aparte del que está en el enlace de mi última pregunta?

Los últimos cambios en master-SNAPSHOT incluyen un controlador LoginApi que le permite autenticar a un usuario que usa una API. Es compatible con UsernamePasswordProvider y todos los OAuth2Providers.

En el caso del UsernamePasswordProvider puede publicar las credenciales del usuario y, si están correctas, obtendrá un json con un token que se puede usar en un encabezado X-Auth-Token para invocar SecuredActions. Por ejemplo:

curl --data "[email protected]&password=some_password” http://localhost:9000/auth/api/authenticate/userpass

Para los proveedores basados ​​en OAuth2, debe publicar un JSON con un accessToken generado por el servicio externo (que se obtuvo en el lado del cliente) junto con el correo electrónico del usuario. El módulo utilizará accessToken para verificar si funciona y comparará el correo electrónico devuelto por el servicio externo al que se entregó. Si coinciden, se considera que el usuario está autenticado. Esto es muy similar a lo que estaban haciendo los chicos de FortyTwo y pensé que sería bueno tener la funcionalidad integrada ( http://eng.42go.com/mobile-auth-with-play-and-securesocial/ ).

Por ejemplo, tener un archivo test.json con los valores de accessToken y expiresIn devueltos después de la autenticación con Facebook en el lado del cliente (p. Ej .: usando Javascript):

{ "email": “[email protected]”, "info": { "accessToken": “an_access_token”, "expiresIn": a_number_with_expiration_in_seconds } }

Puedes invocar:

curl -v --header "Content-Type: application/json" --request POST --data-binary "@test.json" http://localhost:9000/auth/api/authenticate/facebook

Una respuesta json de muestra para cualquiera de las llamadas anteriores sería:

{"token":"98b9613dac60890b8e0abf5bc0f77591523df4e6de50b085c832116b8db2cc65511e0de6780f6a49f8755eddabbd46e6afada92160758fd6d4bbb25dc57e0f7b1e4b5b59fbbe543cf80ad1b6d91de7764e3ac1aaa0afac0c312a47bf27258f455606c6c19b1a3d40f8631ce98e6b76e128dddcb29511eb81200ffe9de95cba7a","expiresOn":"2014-05-07T07:43:10.987-03:00"}

A continuación, puede invocar una acción segura como:

curl -v --header "Content-Type: application/json" -H "X-Auth-Token: 819a9cb9227d2c82af9c1ee2a62b9e7d35725e235e086ab95ecce0b509f3f7b389f430e217e341306ecaebfd1972ac083de73a32341a26f97150ae71fb0417f0031534d818356b2266ffc100e5ee6a50bd1f9ec76b0f68d2ff8ce4d196b4a86b61e002b29b00532ef166cb2eb8476d3ae008c112891628bc0f444c7512c01345" http://localhost:9000/my-protected-action


Recomiendo usar Silhouette ( repo ). Silhouette fue diseñado para ser flexible.

Aquí puede encontrar un proyecto inicial usando Silhouette que expone una api de descanso para registrarse, cantar y la autenticación social.