Estoy desarrollando una API que usarán los usuarios de mis clientes. Así es como se verá el flujo:Diseño OAuth para API sin permiso de usuarios
- El usuario de mi servicio basado en la nube crea una clave API.
- El usuario incorpora la clave API en sus propias aplicaciones personalizadas.
- El usuario implementa la aplicación en sus propios usuarios finales.
- La aplicación se comunica con nuestra API.
Estoy buscando consejos sobre cómo proteger esta API. Veo algunos problemas:
- La clave de API debe estar integrada en la aplicación de los usuarios y, por lo tanto, es vulnerable al robo y el abuso.
- Una vez que una clave de API se ve comprometida, se puede desactivar fácilmente, pero ¿cómo actualizarán mis usuarios sus aplicaciones para usar una nueva clave de API sin tener que reconstruir la aplicación y volver a desplegarla?
¿Alguien tiene alguna idea sobre cómo diseñar esto?
Su problema 1: la clave de API tiene que incrustarse ... ¿Por qué? ¿Qué idioma/plataforma estás usando? –
La API no se puede abrir de par en par. Estoy recopilando información de la aplicación en nombre de los usuarios de mi sistema. Así que necesito asegurarme de que la información sea legítima y que vaya a la cuenta correcta en nuestro sistema. ¿Tiene sentido? –
Eric, ¿cómo terminaste implementando esto bien? Cada método que se me ocurre para asegurar una API * requiere * alguna forma de clave pública/privada que todos adolezcan de esta vulnerabilidad segura. Estoy pensando específicamente en las aplicaciones de Android que se descargaron/repostaron a principios de este año con malware en ellas.FWIW, Twitter parece resolver este problema emitiendo claves públicas/privadas por * aplicación *, no por cuenta, por lo que si una aplicación se ve comprometida, toda la aplicación se desactiva hasta que se despliegue una nueva versión con nuevas claves. http://dev.twitter.com/pages/auth –