Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Connessione a AWS IoT Core utilizzando l'autenticazione personalizzata
I dispositivi possono connettersi a AWS IoT Core utilizzando l'autenticazione personalizzata con qualsiasi protocollo che AWS IoT Core supporti per la messaggistica sui dispositivi. Per ulteriori informazioni sui protocolli di comunicazione supportati, consulta Protocolli di dispositivo di comunicazione. I dati di connessione che passi all'autorizzatore della funzione Lambda dipendono dal protocollo utilizzato. Per ulteriori informazioni sulla creazione dell'autorizzatore della funzione Lambda, consulta Scrittura della funzione Lambda. Nelle sezioni seguenti viene illustrato come connettersi per l'autenticazione utilizzando ogni protocollo supportato.
HTTPS
Dispositivi che inviano dati a AWS IoT Core utilizzando il API di pubblicazione HTTP possono passare le credenziali tramite le intestazioni delle richieste o i parametri di query nelle loro richieste HTTP POST. I dispositivi possono specificare un'autorizzatore da richiamare utilizzando l'intestazione x-amz-customauthorizer-name o i parametri di query. Se nella tua autorizzazione è abilitata la firma dei token, devi passare e token-key-namex-amz-customauthorizer-signature nelle intestazioni di richiesta o nei parametri di query. Nota che il il valore deve essere URL-encoded quando si utilizza JavaScript dall'interno del browser.token-signature
Nota
La funzione delle autorizzazioni del cliente per il protocollo HTTPS supporta solo le operazioni di pubblicazione. Per ulteriori informazioni sul protocollo HTTP, consultare Protocolli di dispositivo di comunicazione.
Le seguenti richieste di esempio mostrano come passare questi parametri sia nelle intestazioni di richiesta che nei parametri di query.
//Passing credentials via headers POST /topics/topic?qos=qos HTTP/1.1 Host: your-endpoint x-amz-customauthorizer-signature:token-signaturetoken-key-name:token-valuex-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-valueHTTP/1.1
MQTT
Dispositivi che si collegano a AWS IoT Core utilizzando una connessione MQTT possono passare le credenziali tramite username e password campi di messaggi MQTT. Il valore username può facoltativamente contenere una stringa di query che invia valori aggiuntivi (tra cui un token, una firma e il nome di un autorizzatore) al tuo autorizzatore. Puoi utilizzare questa stringa di query se desideri utilizzare uno schema di autenticazione basato su token anziché i valori username e password.
Nota
I dati nel campo della password sono codificati in base64 da AWS IoT Core. Devono essere decodificati dalla funzione Lambda.
L'esempio seguente contiene una stringa username che contiene parametri aggiuntivi che specificano un token e una firma.
username?x-amz-customauthorizer-name=authorizer-name&x-amz-customauthorizer-signature=token-signature&token-key-name=token-value
Per richiamare un autorizzatore, i dispositivi che si connettono a AWS IoT Core utilizzando MQTT e l'autenticazione personalizzata devono connettersi alla porta 443. Devono inoltre superare l'estensione TLS ALPN (Application Layer Protocol Negotiation) con un valore di mqtt e l'estensione Server Name Indication (SNI) con il loro nome host AWS IoT Core endpoint di dati. Per evitare potenziali errori, il valore per x-amz-customauthorizer-signature deve essere codificato in formato URL. Inoltre, è raccomandabile che anche i valori di x-amz-customauthorizer-name e token-key-name siano codificati nello stesso formato. Per ulteriori informazioni su questi valori, consulta Protocolli di dispositivo di comunicazione. AWS IoT SDK per dispositivi, SDK per dispositivi mobili e AWS IoT Client per dispositivi V2 può configurare entrambe queste estensioni.
MQTT terminato WebSockets
Dispositivi che si collegano a AWS IoT Core utilizzando MQTT su WebSockets può passare le credenziali in uno dei due modi seguenti.
-
Tramite le intestazioni delle richieste o i parametri di interrogazione nella richiesta HTTP UPGRADE per stabilire il WebSockets connessione.
-
Attraverso i campi
usernameepasswordnel messaggio MQTT CONNECT.
Se si passano le credenziali tramite il messaggio di connessione MQTT, sono necessarie le estensioni ALPN e SNI TLS. Per ulteriori informazioni su queste estensioni, consulta MQTT. Nell'esempio seguente viene illustrato come trasferire le credenziali tramite la richiesta di aggiornamento HTTP.
GET /mqtt HTTP/1.1 Host: your-endpoint Upgrade: WebSocket Connection: Upgrade x-amz-customauthorizer-signature:token-signaturetoken-key-name:token-valuesec-WebSocket-Key:any random base64 valuesec-websocket-protocol: mqtt sec-WebSocket-Version:websocket version
Firma del token
Devi firmare il token con la chiave privata della coppia di chiavi pubblica-privata che hai utilizzato nella chiamata create-authorizer. Gli esempi seguenti mostrano come creare la firma del token utilizzando un UNIX-like comando e JavaScript. Usano il SHA-256 algoritmo hash per codificare la firma.