Estaba pensando en la seguridad de mi API de servicio web REST, y decidí echar un vistazo a otros servicios grandes y cómo lo hacen. Como ejemplo, decidí estudiar OAuth de Twitter. Después de leer la guía para principiantes, estoy un poco confundido y conmocionado.¿OAuth no es seguro o no lo entendí?
que he entendido que es proveedor de servicio la responsabilidad para autenticar usuarios y para mostrar qué tipo de usuario el acceso del consumidor es exigente (por ejemplo, que quieren de acceso de sólo lectura a los recursos específicos). Pero vi proveedores de servicios que no informan al usuario sobre qué tipo de acceso exige el consumidor (e incluso ahora muestra la identidad del consumidor). La segunda parte del problema es que el consumidor puede mostrar su propio formulario personalizado de Autenticación del servicio del proveedor en IFrame, y simplemente ocultar los detalles de acceso, simplemente puede robarle la contraseña, o solicitar acceso ilimitado a sus recursos, puede hacer básicamente lo que quiera, hay muchas formas de engañar al usuario.
Como ejemplo tomemos LinkedIn. Solicitan su nombre de usuario y contraseña de Gmail dentro de su propio formulario, y no tienen idea de cómo lo usarán. Pueden simplemente robarlo y almacenarlo en su base de datos, pueden hacerlo mediante OAuth a Gmail (y no muestran la página de Gmail con información sobre el tipo de acceso que solicitan), pueden hacer lo que quieran con esta información.
Lo que estoy tratando de decir no es que el protocolo de comunicación OAuth no sea seguro, sino que hay muchas maneras de usarlo incorrectamente para engañar al usuario y obtener sus credenciales.
BTW había flujo de seguridad en el propio protocolo OAuth http://oauth.net/advisories/2009-1/) y estoy bastante seguro de que hay más, pero a nadie le importa encontrarlos.
Si un servicio solicita su nombre de usuario y contraseña dentro de un formulario, esto es ** no ** OAuth. De hecho, ese es precisamente el patrón que OAuth debe resolver. –
@BobAman: no es OAuth en cuanto a que OAuth no aborda la Autenticación, pero puede usar el nombre de usuario | contraseña desde para autenticar el nombre del usuario ob en el sitio del proveedor del servicio y obtener el token de autorización OAuth. Así que bajo la cubierta puede ser OAuth bot no como debería ser. –