He tratado con OAuth antes, pero no estoy muy seguro acerca de la API con la que estoy trabajando ahora. Mi pregunta es básicamente: ¿esto es terriblemente inseguro ?
Como lo entiendo, oAuth hace lo siguiente (aproximadamente):
-
Service X me da una clave y un secreto
-
Le pido al usuario que me conceda acceso al servicio X
-
Envié mi clave y mi secreto al Servicio X para verificar. Service X me da un token de solicitud, que envío con el usuario.
-
El usuario confirma que quiere dejarme entrar, y el servicio me los envía con un token que puedo mantener en mi base de datos, y que utilizo para hacer llamadas de API de servicio en su nombre
-
En algún momento, el token caduca, pero el servicio sabe quién soy, por lo que puedo pedirles una nueva
Sin embargo, la API con la que estoy tratando funciona de esta manera (todo https, obv):
-
Me dan una clave de API.
-
El usuario me da su nombre de usuario y contraseña
-
Los transmito al servicio junto con mi clave de API y luego los descarto
-
El servicio me envía un token que puedo usar para hacer llamadas de API en su nombre (usando el token y mi clave de API), que almaceno en mi base de datos.
-
En algún momento, el token caduca y necesito obtener uno nuevo, por lo que el usuario debe volver a autenticarse.
¿Tengo razón al pensar que las principales debilidades de este esquema en comparación con OAuth son las siguientes?
- no hay ninguna garantía de que la solicitud provenga de mi servidor, por lo que si alguien se rompió en mi base de datos, podría hacer llamadas a la API a voluntad de todos mis usuarios, usando mi clave de API, que podrían obtener al analizar el POST que tengo para enviar al autenticar un usuario dado
- Tengo que volver a autenticar al usuario con una contraseña, etc., ya que básicamente es peligroso tener esa información flotando alrededor
- Estoy obligado a proporcionar una conexión HTTPS para que el usuario escriba su contraseña de servicio en primer lugar
No son cosas de vida o muerte, no son cuentas bancarias de la gente, etc., pero sería bueno tener la confianza razonable de que no habrá una ficha de datos de Exxon Valdez.
Gracias por cualquier ayuda o consejo.