Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Conectarse a AWS IoT Core mediante una autenticación personalizada
Los dispositivos se pueden conectar AWS IoT Core mediante una autenticación personalizada con cualquier protocolo AWS IoT Core compatible con la mensajería del dispositivo. Para obtener más información acerca de los protocolos de comunicación compatibles, consulte Protocolos de comunicación de dispositivos. Los datos de conexión que se transfieren a la función de Lambda de su autorizador dependen del protocolo que utilice. Para obtener más información acerca de cómo crear la función de Lambda de su autorizador, consulte Definición de la función de Lambda. En las secciones siguientes se explica cómo conectarse para autenticarse mediante cada protocolo compatible.
HTTPS
Los dispositivos a los que se envían datos AWS IoT Core mediante la función HTTPPublicar API pueden pasar las credenciales a través de los encabezados de las solicitudes o de los parámetros de consulta de sus HTTP POST solicitudes. Los dispositivos pueden especificar un autorizador para invocarlo mediante el encabezado x-amz-customauthorizer-name
o el parámetro de consulta. Si tiene habilitada la firma por token en su autorizador, debe pasar
y token-key-name
x-amz-customauthorizer-signature
en los encabezados de las solicitudes o en los parámetros de consulta. Tenga en cuenta que el
valor debe estar URL codificado en «s» cuando se utilice JavaScript desde el navegador.token-signature
nota
El autorizador del HTTPS protocolo por parte del cliente solo admite operaciones de publicación. Para obtener más información sobre el HTTPS protocolo, consulteProtocolos de comunicación de dispositivos.
Los siguientes ejemplos de solicitudes muestran cómo se transfieren estos parámetros tanto en los encabezados de las solicitudes como en los parámetros de consulta.
//Passing credentials via headers POST /topics/topic?qos=qos HTTP/1.1 Host: your-endpoint x-amz-customauthorizer-signature:
token-signature
token-key-name
:token-value
x-amz-customauthorizer-name:authorizer-name
//Passing credentials via query parameters POST /topics/topic?qos=qos&x-amz-customauthorizer-signature=token-signature
&token-key-name
=token-value
HTTP/1.1
MQTT
Los dispositivos que se conectan AWS IoT Core mediante una MQTT conexión pueden pasar credenciales a través de los password
campos username
y de los MQTT mensajes. De forma opcional, el valor de username
también puede contener una cadena de consulta que transfiere valores adicionales (como un token, una firma y el nombre del autorizador) a su autorizador. Puede utilizar esta cadena de consulta si desea utilizar un esquema de autenticación basado en símbolos en lugar de valores username
y password
.
nota
Los datos del campo de contraseña están codificados en base64 por. AWS IoT Core Debe descodificarlos con la función de Lambda.
El siguiente ejemplo contiene una cadena username
con parámetros adicionales que especifican un token y una firma.
username?x-amz-customauthorizer-name=
authorizer-name
&x-amz-customauthorizer-signature=token-signature
&token-key-name
=token-value
Para invocar un autorizador, los dispositivos que se conecten AWS IoT Core mediante MQTT una autenticación personalizada deben conectarse al puerto 443. También deben pasar la extensión Application Layer Protocol Negotiation (ALPN) con un valor de mqtt
y la TLS extensión de indicación del nombre del servidor (SNI) con el nombre de host de su punto final de AWS IoT Core datos. Para evitar posibles errores, el valor de x-amz-customauthorizer-signature
debe estar URL codificado. También recomendamos encarecidamente que los valores de x-amz-customauthorizer-name
y token-key-name
estén URL codificados. Para obtener más información acerca de estos valores, consulteProtocolos de comunicación de dispositivos. V2 AWS IoT SDK de dispositivo, SDK para dispositivos móviles y AWS IoT cliente de dispositivo puede configurar estas dos extensiones.
MQTTmás WebSockets
Los dispositivos que se conectan AWS IoT Core mediante MQTT Over WebSockets pueden transferir las credenciales de una de las dos maneras siguientes.
-
Mediante encabezados de solicitud o parámetros de consulta en la HTTP UPGRADE solicitud para establecer la WebSockets conexión.
-
A través de los
password
camposusername
y del MQTT CONNECT mensaje.
Si pasa las credenciales a través del mensaje de MQTT conexión, las SNI TLS extensiones ALPN y son obligatorias. Para obtener más información sobre estas extensiones, consulteMQTT. El siguiente ejemplo muestra cómo pasar las credenciales a través de la solicitud de HTTP actualización.
GET /mqtt HTTP/1.1 Host: your-endpoint Upgrade: WebSocket Connection: Upgrade x-amz-customauthorizer-signature:
token-signature
token-key-name
:token-value
sec-WebSocket-Key:any random base64 value
sec-websocket-protocol: mqtt sec-WebSocket-Version:websocket version
Firmar el token
Debe firmar el token con la clave privada del par de claves pública-privada que utilizó en la llamada a create-authorizer
. En los siguientes ejemplos se muestra cómo crear la firma del token mediante un UNIX comando like y JavaScript. Utilizan el algoritmo hash SHA -256 para codificar la firma.