Estoy tratando de encontrar la manera de poner en práctica el siguiente flujo de autenticación:API REST en Google App Engine
- El usuario accede a una aplicación web (más probabilidades de ser escrito usando Ruby on Rails) y autentica (por ejemplo, nombre de usuario/contraseña).
- El cliente consume datos a través de AJAX provisto por una API RESTful basada en Google App Engine (Python, webapp2).
Requisitos:
- sólo los usuarios autenticados en la aplicación web (rieles) deben ser capaces de acceder a la API alojada en App Engine.
- Los usuarios pueden tener diferentes roles en la aplicación web (Rails), y la API (App Engine) necesita saber qué funciones están asociadas al usuario dado para restringir el acceso a ciertos datos.
- El cliente debe poder llamar a la API (App Engine) directamente a través de AJAX, sin enrutar todas las solicitudes a través de la aplicación web (Rails).
Estoy buscando sugerencias sobre cómo implementar dicho flujo de trabajo. ¿Debo usar OAuth (u OAuth2) para acceder a la API? Si el proveedor de OAuth vive en App Engine y en la aplicación web (Rails) solicite a la API un token en nombre del usuario. De ser así, ¿cuál es la mejor manera de permitir que solo la aplicación web (Rails) solicite tokens de OAuth? ¿O debería considerar una estrategia completamente diferente?
Cualquier sugerencia es muy apreciada. También estoy buscando sugerencias de bibliotecas para implementar OAuth en el contexto anterior.