Muchas API protegidas con claves API solo usan la clave secreta (es decir, una contraseña) sin algo como un ID de cuenta o nombre de usuario.
Por ejemplo, Stripe API usa la clave secreta como nombre de usuario en Autenticación básica, dejando la contraseña en blanco:
curl https://api.stripe.com/v1/charges \
-u sk_test_BQokikJOvBiI2HOWgH4olfQ2:
¿Cómo funciona esto en el lado del servidor? ¿Busca el secreto en una tabla con los secretos como claves principales, en texto plano? ¿Qué sucede si se filtra esta tabla?
¿Por qué es mejor usar un combo account_id:secret_key
en la autenticación? Luego, puede almacenar bcrypt(secret_key)
en lugar de secret_key
en texto sin formato, utilizando account_id
como clave principal.
Related , pero no la igual