¿Por qué las API utilizan claves de API en lugar de nombres de usuario?

10

Ahora es común usar una clave de API para identificar a un agente cuando se trata de una API. ¿Cuáles son los méritos de hacerlo al usar un nombre de usuario especificado por el desarrollador? ¿Es simplemente que la clave API es más difícil de adivinar, o hay una razón más profunda?

    
pregunta Sinan Taifour 20.03.2013 - 13:11
fuente

4 respuestas

7

Se me ocurren varias razones por las que puedes usar una clave:

  • Evite las adivinanzas, especialmente si la clave se duplica como parte de la autenticación. Esto es lo que la respuesta de Terry está tratando de decirle: ¿por qué permitir que un usuario malintencionado simplemente pruebe varios nombres de usuario de un diccionario cuando puede hacer que busquen en un espacio de direcciones grande? al menos). Combinado con la limitación de velocidad y el bloqueo de IP, filtraría una gran cantidad de ataques.
  • Evite que la cuenta de los usuarios se vea comprometida si el nombre de usuario es público. Si mi nombre de usuario es antony y mi clave de API es antony , genial, está a punto de ingresar. Sin embargo, si mi clave de API es aleatoria, se vuelve mucho más difícil (consulte el punto 1).
  • Permitir que múltiples dispositivos accedan al sistema y, por extensión, habilitar un tipo de control de acceso para dispositivos. Si tiene un nombre de usuario memorable como su clave de API, esto será difícil de revocar a menos que haya un secreto de API correspondiente. Si estás usando secretos API, tener secretos por dispositivo logra algo similar.
  • Evita que una clave filtrada identifique al usuario de cualquier manera. Esto, por supuesto, es completamente inútil si el contenido de la aplicación o dispositivo identifica al usuario.

Es probable que esta lista no sea exhaustiva.

    
respondido por el user2213 20.03.2013 - 14:42
fuente
3

Como otros lo han declarado, es crear una ID única para cada usuario.

Pero para AWS específicamente , la "autenticación de solicitud, el elemento AWSAccessKeyId identifica la clave secreta que se utilizó para calcular la firma y (indirectamente) el desarrollador que realizó la solicitud ".

    
respondido por el tnicholson 20.03.2013 - 16:48
fuente
1

En la mayoría de los sistemas que he visto, las claves API no actúan simplemente como un medio de identificación. Por lo general, se doblan como medio de autenticación.

El desarrollador no va a escribir la clave API para todas y cada una de las solicitudes que realiza. La clave probablemente se almacenará en el código o en un archivo de configuración en algún lugar. No tiene sentido permitir que el desarrollador elija un combo memorable de nombre de usuario y contraseña a través de una clave API aleatoria.

    
respondido por el Ayrx 20.03.2013 - 13:14
fuente
1

La clave API es simplemente para identificar qué servicio está realizando la solicitud. No sé que exista una razón particular para que sean como son porque es más fácil entregar claves aleatorias en lugar de nombres de usuario, ya que todo está controlado por computadoras y evita los problemas de las personas que desean lo mismo. nombre de usuario

Quizás también haya casos en los que se pueda elegir el nombre de usuario para que sea engañoso. No estoy seguro de lo efectivo que sería esto, ya que no es algo que el usuario promedio vea y espero que un usuario más experimentado no lo acepte, pero si pudiera hacer que su nombre de usuario de la API de Facebook sea "FacebookAdmin", no lo haría. No seas particularmente bueno.

    
respondido por el AJ Henderson 20.03.2013 - 14:19
fuente

Lea otras preguntas en las etiquetas