Estoy diseñando una API y quiero aprender a crear un método de acceso seguro, algo más seguro que solo emitir una clave API.
De lo que puedo reunir, lo siguiente sería seguro:
-
El cliente solicita un token de sesión presentando una clave de API pública
-
El token de sesión se verifica cuando el cliente presenta la API con una firma digital
-
El token de sesión se agota después de un cierto período de tiempo
-
La firma digital se crearía usando la siguiente función
base64_encode (hash_hmac ('sha1', STRING));
Donde STRING es un patrón predefinido como API Secret Key + API Access point + Session Token , por ejemplo.
Suponiendo que esto es correcto, tengo dos preguntas; ¿Hay alguna necesidad de una clave pública ofuscada mientras no sea incremental o se deba utilizar un método de generación de claves altamente seguro? En segundo lugar, la función de firma que se muestra es aplicable a la mayoría de los sistemas comerciales, parece que debe ser la utilizada por otras API.