Es OAuth siempre la elección correcta (y cuando no lo es)

7

Estoy creando una aplicación móvil que necesita interactuar por usuario con una API. Después de haber trabajado en varios proyectos como cliente de API de terceros, mi idea inicial fue ir con OAuth. Sin embargo, he estado pensando en ello y no planeo abrir la API públicamente a otros consumidores: el único consumidor siempre será mi aplicación móvil, así que ¿pensé si OAuth es la mejor opción? ¿O es una exageración?

Luego leí este artículo que asesora sobre un proceso de Google, que sugiere el siguiente enfoque para este escenario. :

  • Incruste una vista web en su aplicación con un formulario de inicio de sesión basado en web normal
  • en el inicio de sesión exitoso, pase una cookie segura a la aplicación móvil que tiene un token seguro
  • usar el token en futuras solicitudes de API

(asumiendo todo https etc)

Esto parece mucho más simple que cualquier implementación de OAuth, y se podría hacer fácilmente usando el filtro de seguridad / cadena de autenticación de Spring (el código del lado de mi servidor es Java & Spring MVC / Secutiry, etc.). Parece interesante que sea el enfoque recomendado por Google, que en mi opinión ha agregado cierta credibilidad a la solución.

Suponiendo que con la solución anterior también incluí una clave de aplicación móvil, etc. (solo para evitar que cualquier dispositivo móvil llegue al formulario / API), parece que tendría el mismo problema que OAuth en tanto que tengo que incluir mi aplicación clave incrustada en el código móvil (que podría ser descompilado, etc.).

También leí este artículo sobre el enfoque de Amazon ( aparentemente similar a una implementación de OAuth 1), lo que parece que podría ser una extensión razonable de la solución propuesta por Google que aparece más arriba y, en lugar de enviar el token al servidor, utilícelo como la clave para codificar los datos de solicitud.

Soy bastante nuevo en implementar cualquier cosa en seguridad más allá de la seguridad de usuario / contraseña basada en la web normal, por lo que agradecería tener ideas sobre cuándo usar OAuth para aplicaciones móviles y si las dos soluciones anteriores (amazon y amp; google) son adecuadas para el propósito de si han sido reemplazados por OAuth 2.

    
pregunta rhinds 04.03.2014 - 17:07
fuente

1 respuesta

1

La respuesta a la primera parte de la pregunta es fácil: ningún protocolo es siempre la elección correcta.

OAuth resuelve (bueno, ofrece una solución a) muchos problemas molestos, como autorizar a los clientes y proteger los recursos de forma semigranular en los navegadores, los clientes activos y cualquier cosa que se encuentre entre ellos.

Puede ser una exageración, lo cual es una buena razón para no usarlo. No realiza la autenticación (OpenID Connect es la extensión authn a OAuth) y no ofrece ciertos comportamientos que hacen otros protocolos, por ejemplo. SAML, pero por otro lado eso podría ser una buena cosa.

La solución ofrecida por Google tiene muchas características de OAuth, pero se basa en gran medida en la cookie y no parece que se escale bien para uso público. Si no le importa exponer públicamente las API, podría estar bien, pero si alguna vez lo desea, OAuth sería un mejor enfoque en relación con esa solución.

Si recorres la ruta OAuth, es probable que desees admitir la última versión, ya que te da acceso a OpenID Connect. De lo contrario, quedará atascado creando sus propios medios de autenticación, y todos los clientes tendrán que implementar en contra de su diseño personalizado.

    
respondido por el Steve 04.03.2014 - 18:21
fuente

Lea otras preguntas en las etiquetas