Laiye Chatbot comprueba la existencia y validez del encabezado HTTP X-Mindsay-Signature para validar la autenticidad de la solicitud. Para ello, Laiye Chatbot y su socio comparten una clave secreta (configurada durante la integración).
El socio de Laiye Chatbot debe generar una firma al realizar una solicitud a la API. La API de Laiye intenta generar la misma firma por su parte y comprueba que coincida con la firma proporcionada en el encabezado HTTP X-Mindsay-Signature.
Para evitar ataques de repetición, la API de Laiye también valida que X-Mindsay-Timestamp no sea demasiado antigua (tolerancia de 5 minutos).
Así es como se genera la firma:
Concatena el valor del encabezado
X-Mindsay-Timestampcon el cuerpo de la solicitudCalcula el hash hexadecimal de esta cadena utilizando el algoritmo estándar
HMAC-SHA256y la clave secreta compartida
Ejemplo
X-Mindsay-Timestamp:
1575215418
Body:
{"end_user_token": "df6a0edc-b31d-461x-ydcx-f7d5f02cd3d0"}
Secret:
a_secure_secret
Concatenated value:
1575215418{"end_user_token": "df6a0edc-b31d-461x-ydcx-f7d5f02cd3d0"}
Computed HMAC:
66f3778d4b2850a1a64fbb190a552ede968527cefc440c1d2f9d5c5fede77b93