As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
AWS IoT Core Conectando-se usando autenticação personalizada
Os dispositivos podem se conectar AWS IoT Core usando autenticação personalizada com qualquer protocolo AWS IoT Core compatível com mensagens de dispositivos. Para obter mais informações sobre protocolos de comunicação disponíveis, consulte Protocolos de comunicação do dispositivo. Os dados de conexão transmitidos para a função do Lambda do autorizador dependem do protocolo usado. Para obter mais informações sobre como a função do Lambda do autorizador, consulte Definição de sua função do Lambda. As seções a seguir explicam como se conectar para autenticar usando cada protocolo compatível.
HTTPS
Os dispositivos que enviam dados AWS IoT Core usando o HTTPPublish API podem passar credenciais por meio de cabeçalhos de solicitação ou parâmetros de consulta em suas HTTP POST solicitações. Os dispositivos podem especificar um autorizador a ser invocado usando o cabeçalho x-amz-customauthorizer-name
ou o parâmetro de consulta. Se você tiver a assinatura de token ativada no autorizador, será necessário transmitir
e token-key-name
x-amz-customauthorizer-signature
nos cabeçalhos da solicitação ou nos parâmetros de consulta. Observe que o
valor deve ser URL codificado em -quando usado JavaScript de dentro do navegador.token-signature
nota
O autorizador do cliente para o HTTPS protocolo só oferece suporte às operações de publicação. Para obter mais informações sobre o HTTPS protocolo, consulteProtocolos de comunicação do dispositivo.
Os exemplos de solicitações a seguir mostram como transmitir esses parâmetros nos cabeçalhos de solicitação e nos 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
Os dispositivos que se conectam AWS IoT Core usando uma MQTT conexão podem passar credenciais pelos password
campos username
e das MQTT mensagens. Opcionalmente, o valor username
também pode conter uma string de consulta que transmite valores adicionais (incluindo token, assinatura e nome do autorizador) ao autorizador. Você poderá usar essa string de consulta caso queira usar um esquema de autenticação baseado em tokens em vez de valores username
e password
.
nota
Os dados no campo de senha são codificados em base64 por. AWS IoT Core A sua função do Lambda deve decodificá-los.
O exemplo a seguir contém uma string username
com parâmetros extras que especificam um token e uma assinatura.
username?x-amz-customauthorizer-name=
authorizer-name
&x-amz-customauthorizer-signature=token-signature
&token-key-name
=token-value
Para invocar um autorizador, os dispositivos que se conectam AWS IoT Core usando MQTT uma autenticação personalizada devem se conectar na porta 443. Eles também devem passar a TLS extensão Application Layer Protocol Negotiation (ALPN) com um valor de mqtt
e a extensão Server Name Indication (SNI) com o nome do host de seu endpoint de AWS IoT Core dados. Para evitar possíveis erros, o valor de x-amz-customauthorizer-signature
deve ser URL codificado. Também é altamente recomendável que os valores de x-amz-customauthorizer-name
e token-key-name
sejam URL codificados. Para obter mais informações sobre esses valores, consulte Protocolos de comunicação do dispositivo. O AWS IoT SDKs de dispositivos, SDKs móveis e AWS IoT cliente de dispositivo V2 pode configurar essas duas extensões.
MQTTterminado WebSockets
Os dispositivos que se conectam AWS IoT Core usando MQTT over WebSockets podem transmitir credenciais de uma das duas maneiras a seguir.
-
Por meio de cabeçalhos de solicitação ou parâmetros de consulta na HTTP UPGRADE solicitação para estabelecer a WebSockets conexão.
-
Por meio dos
password
camposusername
e na MQTT CONNECT mensagem.
Se você passar as credenciais por meio da mensagem de MQTT conexão, as SNI TLS extensões ALPN e serão necessárias. Para obter mais informações sobre essas extensões, consulteMQTT. O exemplo a seguir demonstra como passar credenciais por meio da solicitação de HTTP upgrade.
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
Assinatura do token
É necessário assinar o token com a chave privada do par de chaves públicas/privadas usadas na chamada create-authorizer
. Os exemplos a seguir mostram como criar a assinatura do token usando um comando UNIX -like e. JavaScript Eles usam o algoritmo de hash SHA -256 para codificar a assinatura.