no es oAuth más débil que las contraseñas tradicionales

1

Comprendo la necesidad de un acceso por programación a apis, etc., mientras que las contraseñas se utilizan para una autenticación más humana. Sin embargo, cuando almacenamos contraseñas, (con suerte) las eliminamos y las procesamos. Cuando almacenamos tokens, están en algún formato que se puede revertir en texto sin formato, ya que a menudo revelamos estos tokens a los desarrolladores.

Lo que me parece curioso es que no he encontrado ninguna preocupación por almacenar tokens, pero ¿no es este tratamiento intrínsecamente menos seguro que el de las contraseñas? ¿Por qué estamos bien con esto? ¿No podríamos guardar el token en la base de datos una vez que se lo mostramos al desarrollador y luego, si necesitan cambiarlo, pídales que lo reinicien (al igual que nosotros con las contraseñas)?

    
pregunta winhowes 30.01.2016 - 22:15
fuente

2 respuestas

1

Los tokens y las contraseñas son realmente cosas muy diferentes. Pero no ha especificado en su pregunta lo que realmente está preguntando. Menciona OAuth en la línea de asunto de su pregunta, pero luego no la menciona nuevamente en el cuerpo de la pregunta. OAuth tiene diferentes tipos de tokens en su especificación, dependiendo de la subespecificación de la que esté hablando y del tipo de token que esté hablando.

Tengo que asumir que estás hablando de tokens de portador, es decir, los tokens que se entregan después de que se completa el flujo de OAuth. En algunos casos, es posible que ni siquiera necesite almacenar tokens del Portador en el servidor en cualquier lugar, por lo que no se aplica la cuestión de si almacenarlos o no como hashes. Si está hablando de tokens de actualización, entonces esa podría ser una situación en la que tal vez quiera almacenarlos, pero también puedo ver los mismos métodos aplicados para actualizar tokens que para tokens de acceso de portador, por lo que probablemente no necesitan Si se almacenan en el servidor, solo necesitan estar firmados para detectar la manipulación. Para hacer que OAuth funcione de esta manera, debería echar un vistazo a la especificación de token OAUTH-JWT Bearer: enlace

Habiendo dicho todo, no importa qué tipo de token esté usando o qué tipo de flujo de OAuth esté usando, debe confiar en TLS para asegurar la comunicación entre recursos.

OAuth es una especificación muy compleja y no hay una respuesta única para la mayoría de las preguntas sobre OAuth.

    
respondido por el RibaldEddie 30.01.2016 - 22:50
fuente
2

Pareces estar confundiendo la autenticación con la autorización. OAuth se trata principalmente de autorización y tiene varios flujos para admitir diferentes escenarios y casos de uso, uno en particular que se superpone con su pregunta y es compatible con la autenticación basada en la contraseña del usuario / recurso para autorizar el acceso de la aplicación solicitante a un conjunto de recursos.

Como otros han señalado en su respuesta, hay muchos flujos diferentes dentro de OAuth y diferentes tipos de tokens, y varias especificaciones de token para usar con OAuth. En muchos sistemas, un token será un valor aleatorio o una carga útil con firma criptográfica para que el servidor pueda evitar el almacenamiento de cualquier cosa. Los tokens son muy diferentes a las contraseñas de los usuarios y se utilizan para diferentes casos de uso, es decir, para la autorización de transporte.

    
respondido por el Andrew Hacking 31.01.2016 - 03:36
fuente

Lea otras preguntas en las etiquetas