¿Qué es una clave API? [cerrado]

109

Veo esta palabra en casi todas las aplicaciones de servicios cruzados en estos días.

¿Qué es exactamente una clave API y cuáles son sus usos?

Además, ¿cuál es la diferencia entre las claves API públicas y privadas?

Cáscara de naranja
fuente

Respuestas:

111

Para qué se utiliza "exactamente" una clave API depende en gran medida de quién la emite y para qué servicios se utiliza. Sin embargo, en general, una clave de API es el nombre que se le da a algún tipo de token secreto que se envía junto con las solicitudes del servicio web (o similares) para identificar el origen de la solicitud. La clave puede incluirse en algún resumen del contenido de la solicitud para verificar aún más el origen y evitar la alteración de los valores.

Normalmente, si puede identificar el origen de una solicitud de manera positiva, actúa como una forma de autenticación, lo que puede conducir al control de acceso. Por ejemplo, puede restringir el acceso a determinadas acciones de la API en función de quién realiza la solicitud. Para las empresas que ganan dinero con la venta de dichos servicios, también es una forma de rastrear quién está usando la cosa con fines de facturación. Además, al bloquear una clave, puede evitar parcialmente el abuso en el caso de volúmenes de solicitud demasiado altos.

En general, si tiene una clave API tanto pública como privada, entonces sugiere que las claves son en sí mismas un par de claves públicas / privadas tradicionales que se utilizan en alguna forma de criptografía asimétrica o firma digital relacionada. Estas son técnicas más seguras para identificar positivamente el origen de una solicitud y, además, para proteger el contenido de la solicitud de espionaje (además de manipulación).

Robar
fuente
12
¡Así poner! Sin embargo, en mi experiencia algo limitada, la distinción público / privado no tiene nada que ver con la criptografía de clave pública. Las claves "públicas" que he visto suelen ser "access lite", en otras palabras, una clave que puede distribuir para otorgar acceso a terceros a datos no confidenciales, sin revelar las claves del reino.
timdev
2
@Rob +1 para la respuesta detallada @tim +1 para la última reflexión.
OrangeRind
@tim - estuvo de acuerdo. Creo que el enfoque más común que he visto es tener una clave de resumen privada.
Rob
24

Hablando de manera muy general:

Una clave API simplemente te identifica.

Si hay una distinción pública / privada, entonces la clave pública es una que puede distribuir a otros, para permitirles obtener algún subconjunto de información sobre usted de la API. La clave privada es solo para su uso y proporciona acceso a todos sus datos.

timdev
fuente
la mayoría de las veces se ven como hashes. ¿Es correcta mi observación?
OrangeRind
Puede generarlos como desee, siempre que sean únicos. Un hash de algunos datos parece una forma razonable de generar uno, sí.
Matthew Scharley
Sí, parecen hashes. Después de todo, no quiere que sean fáciles de adivinar.
timdev
1
Más o menos: la mayoría de las claves de API estándar de bog se generan mediante el hash de un valor pseudoaleatorio y la realización de una codificación de texto sin formato estándar en el resultado, por ejemplo, base16, base64, etc.
Rob
18

Parece que mucha gente usa claves API como solución de seguridad. La conclusión es: nunca trate las claves API como secretas que no lo son. En https o no, quien pueda leer la solicitud puede ver la clave API y puede realizar cualquier llamada que desee. Una clave de API debe ser solo un identificador de 'usuario', ya que no es una solución de seguridad completa, incluso cuando se usa con ssl.

La mejor descripción está en el enlace de Eugene Osovetsky a: Cuando se trabaja con la mayoría de las API, ¿por qué requieren dos tipos de autenticación, a saber, una clave y un secreto? O consulte http://nordicapis.com/why-api-keys-are-not-enough/

timandtheocean
fuente
2
Como puede ver, esta es una pregunta antigua y probablemente se considere "demasiado amplia" (o quizás "fuera de tema") según los estándares modernos de Stack Overflow. Tales preguntas tienden a atraer respuestas obstinadas, que generalmente son rechazadas y / o eliminadas. Mantenerse alejado de tales preguntas suele ser el mejor curso de acción. Puedes echar un vistazo al centro de ayuda para obtener más información.
Dev-iL
10

Una clave de API es un valor único que se asigna a un usuario de este servicio cuando es aceptado como usuario del servicio.

El servicio mantiene todas las claves emitidas y las comprueba en cada solicitud.

Al observar la clave proporcionada en la solicitud, un servicio verifica si es una clave válida para decidir si conceder acceso a un usuario o no.


fuente
Entonces, ¿qué pasa con el público y el privado?
OrangeRind
1
Las claves públicas y privadas provienen del dominio de la encriptación y tienen algo que ver con la encriptación asimétrica. Nunca escuché estos términos usados ​​en el sentido de claves API.
2

Las claves de API son solo una forma de autenticar a los usuarios de los servicios web.

GG.
fuente
1

Piénselo de esta manera, la "Clave API pública" es similar a un nombre de usuario que su base de datos está usando como inicio de sesión en un servidor de verificación. La "Clave de API privada" sería similar a la contraseña. Mediante el sitio / base de datos que utiliza este método, la seguridad se mantiene en el servidor de terceros / de verificación para la solicitud auténtica de publicación o edición de su sitio / base de datos.

La cadena de API es solo la URL del inicio de sesión para que su sitio / base de datos se comunique con el servidor de verificación.

Eugene Grant-Sinclair
fuente