Comprender el flujo de trabajo de autenticación personalizada
La autenticación personalizada le permite definir cómo autenticar y autorizar a los clientes mediante recursos de autorizador. Cada autorizador contiene una referencia a una función de Lambda administrada por el cliente, una clave pública opcional para validar las credenciales del dispositivo e información de configuración adicional. El siguiente diagrama ilustra el flujo de trabajo de autorización para la autenticación personalizada en AWS IoT Core.
Flujo de trabajo de autenticación y autorización personalizada de AWS IoT Core
En la siguiente lista se explica cada paso del flujo de trabajo de autenticación y autorización personalizada.
-
Un dispositivo se conecta al punto de conexión de datos de AWS IoT Core de un cliente mediante uno de los dispositivos compatibles con Protocolos de comunicación de dispositivos. El dispositivo pasa las credenciales en los campos de encabezado de la solicitud, en los parámetros de consulta (para los protocolos HTTP Publish o MQTT a través de WebSockets) o en el campo de nombre de usuario y contraseña del mensaje MQTT CONNECT (para los protocolos MQTT y MQTT sobre WebSockets).
-
AWS IoT Core comprueba una de estas dos condiciones:
-
La solicitud entrante especifica un autorizador.
-
El punto de conexión de datos de AWS IoT Core que recibe la solicitud tiene un autorizador predeterminado configurado para ello.
Si AWS IoT Core encuentra un autorizador de alguna de estas formas, AWS IoT Core activa la función de Lambda asociada al autorizador.
-
-
(Opcional) Si ha activado la firma por token, AWS IoT Core valida la firma de la solicitud mediante la clave pública almacenada en el autorizador antes de activar la función de Lambda. Si se produce un error en la validación, AWS IoT Core detiene la solicitud sin invocar la función de Lambda.
-
La función de Lambda recibe las credenciales y los metadatos de conexión de la solicitud y toma una decisión de autenticación.
-
La función de Lambda devuelve los resultados de la decisión de autenticación y un documento de política de AWS IoT Core que especifica qué acciones están permitidas en la conexión. La función de Lambda también devuelve información que especifica la frecuencia con la que revalida AWS IoT Core las credenciales de la solicitud mediante la invocación de la función de Lambda.
-
AWS IoT Core evalúa la actividad de la conexión con la política que ha recibido de la función de Lambda.
-
Después de establecer la conexión e invocar inicialmente al autorizador personalizado de Lambda, la siguiente invocación se puede retrasar hasta cinco minutos en las conexiones inactivas sin ninguna operación de MQTT. A continuación, las invocaciones posteriores seguirán el intervalo de actualización de su autorizador de Lambda personalizado. Este enfoque puede evitar invocaciones excesivas que podrían superar el límite de simultaneidad de Lambda de su Cuenta de AWS.
Consideraciones de escalado
Como una función de Lambda gestiona la autenticación y la autorización de su autorizador, está sujeta a los límites de precios y servicios de Lambda, como la tasa de ejecución simultánea. Para obtener más información, consulte Precios de LambdarefreshAfterInSeconds y disconnectAfterInSeconds de la respuesta de la función de Lambda. Para obtener más información acerca del contenido de la respuesta de una función de Lambda, consulte Definición de la función de Lambda.
nota
Si deja habilitada la firma, puede evitar que clientes no reconocidos activen su Lambda de forma excesiva. Tenga esto en cuenta antes de deshabilitar el inicio de sesión en su autorizador.
nota
El límite de tiempo de espera de la función de Lambda para el autorizador personalizado es de 5 segundos.