Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Connexion à l' AWS IoT Core aide de l'authentification personnalisée
Les appareils peuvent se connecter à AWS IoT Core l'aide d'une authentification personnalisée avec n'importe quel protocole prenant AWS IoT Core en charge la messagerie des appareils. Pour plus d'informations sur les protocoles de communication pris en charge, consultez Protocoles de communication des appareils. Les données de connexion que vous transmettez à votre fonction Lambda d'autorisation dépendent du protocole que vous utilisez. Pour plus d'informations sur la création de votre fonction Lambda d'autorisation, consultez Définir votre fonction Lambda. Les sections suivantes expliquent comment se connecter pour s'authentifier à l'aide de chaque protocole pris en charge.
HTTPS
Les appareils auxquels des données sont envoyées à AWS IoT Core l'aide de la fonction de HTTPpublication API peuvent transmettre des informations d'identification par le biais d'en-têtes de demande ou de paramètres de requête dans leurs HTTP POST demandes. Les appareils peuvent spécifier un mécanisme d'autorisation à invoquer à l'aide du paramètre d'en-tête x-amz-customauthorizer-name
ou de requête. Si la signature de jetons est activée dans votre mécanisme d'autorisation, vous devez transmettre le
et token-key-name
x-amz-customauthorizer-signature
dans les en-têtes ou paramètres de requête. Notez que la
valeur doit être URL codée lors JavaScript de l'utilisation depuis le navigateur.token-signature
Note
L'autorisateur client pour le HTTPS protocole prend uniquement en charge les opérations de publication. Pour plus d'informations sur le HTTPS protocole, consultezProtocoles de communication des appareils.
Les exemples de requêtes suivants montrent comment transmettre ces paramètres dans les en-têtes et paramètres de requête.
//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
Les appareils qui se connectent à AWS IoT Core l'aide d'une MQTT connexion peuvent transmettre des informations d'identification via les password
champs username
et des MQTT messages. La valeur username
peut éventuellement contenir une chaîne de requête qui transmet des valeurs supplémentaires (y compris un jeton, une signature et un nom du mécanisme d'autorisation) à votre mécanisme d'autorisation. Vous pouvez utiliser cette chaîne de requête si vous souhaitez utiliser un schéma d'authentification basé sur un jeton au lieu des valeurs password
et username
.
Note
Les données du champ du mot de passe sont codées en base64 par. AWS IoT Core Votre fonction Lambda doit le décoder.
L'exemple suivant contient une chaîne username
contenant des paramètres supplémentaires spécifiant un jeton et une signature.
username?x-amz-customauthorizer-name=
authorizer-name
&x-amz-customauthorizer-signature=token-signature
&token-key-name
=token-value
Pour appeler un autorisateur, les appareils qui se connectent à AWS IoT Core l'aide MQTT d'une authentification personnalisée doivent se connecter sur le port 443. Ils doivent également transmettre l'extension Application Layer Protocol Negotiation (ALPN) avec la valeur de mqtt
et l'TLSextension Server Name Indication (SNI) avec le nom d'hôte de leur point de terminaison de AWS IoT Core données. Pour éviter d'éventuelles erreurs, la valeur de x-amz-customauthorizer-signature
doit être URL codée. Nous recommandons également vivement que les valeurs de x-amz-customauthorizer-name
et token-key-name
soient URL codées. Pour plus d'informations sur ces valeurs, consultez Protocoles de communication des appareils. Le AWS IoT SDK pour appareils, kits de développement logiciel mobiles et AWS IoT client pour appareils V2 peut configurer ces deux extensions.
MQTTterminé WebSockets
Les appareils qui se connectent à AWS IoT Core l'aide MQTT de over WebSockets peuvent transmettre des informations d'identification de l'une des deux manières suivantes.
-
Par le biais des en-têtes de demande ou des paramètres de requête contenus dans la HTTP UPGRADE demande pour établir la WebSockets connexion.
-
À travers les
password
champsusername
et du MQTT CONNECT message.
Si vous transmettez des informations d'identification par le biais du message de MQTT connexion, les SNI TLS extensions ALPN et sont requises. Pour plus d'informations sur ces extensions, consultezMQTT. L'exemple suivant montre comment transmettre des informations d'identification par le biais de la demande de HTTP mise à niveau.
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
Signer le jeton
Vous devez signer le jeton avec la clé privée de la paire de clés publique-privée que vous avez utilisée lors de l'appel create-authorizer
. Les exemples suivants montrent comment créer la signature du jeton à l'aide d'une commande UNIX like et JavaScript. Ils utilisent l'algorithme de hachage SHA -256 pour encoder la signature.