MQTT через запрос Websocket/x-amzn-ErrorType: ForbiddenException

Я использую ESP8266-Websocket, aws-sdk-arduino (очищенная ветка) и pubsubclient, чтобы попытаться установить связь с сервисом aws iot mqtt с помощью веб-сокетов.

Мой вопрос касается первого запроса на подключение. Я использую это браузерное приложение в качестве ссылки https://github.com/awslabs/aws-iot-examples и код подписи от aws-sdk-arduino (который отлично работает, вызывая API-интерфейс aws iot restful)

Мой запрос был таким (после подключения к конечной точке на порту 443):

GET wss://ENDPOINT.iot.us-west-2.amazonaws.com/mqtt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AWSKEY%2F20160318%2Fus-west-2%2Fiotdevicegateway%2Faws4_request&X-Amz-Date=20160318T183246Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=a1f0d7b58983f9dff7e3bf6cab062db3243ebafc990803a018c6a23433891404 HTTP/1.1
host: ENDPOINT.iot.us-west-2.amazonaws.com
Connection: Upgrade
Upgrade: websocket
Origin: file://
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: D2alJOyUkBlR+8yhv2UBLg==
Sec-WebSocket-Protocol: mqtt

но я продолжаю получать

HTTP/1.1 403 Forbidden
content-type: application/json
content-length: 241
date: Fri, 18 Mar 2016 18:34:57 GMT
x-amzn-RequestId: f2edfe83-1bbc-4481-97e0-39ccfc4d1c2f
connection: Keep-Alive
x-amzn-ErrorType: ForbiddenException:

мне не хватает какого-то параметра заголовка запроса? есть ли способ получить лучшую обратную связь от x-amzn-ErrorType: ForbiddenException? я ошибаюсь в процессе подписания? (хотя это работает для отдыха)


person Fabio de Toledo    schedule 18.03.2016    source источник


Ответы (1)


Ага, наконец то получил статус ответа 101 переключение протоколов \o/

когда вы строите запрос, он должен быть:

GET /mqtt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AWSKEY%2F20160318%2Fus-west-2%2Fiotdevicegateway%2Faws4_request&X-Amz-Date=20160318T183246Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=a1f0d7b58983f9dff7e3bf6cab062db3243ebafc990803a018c6a23433891404 HTTP/1.1

вместо

GET wss://ENDPOINT.iot.us-west-2.amazonaws.com/mqtt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AWSKEY%2F20160318%2Fus-west-2%2Fiotdevicegateway%2Faws4_request&X-Amz-Date=20160318T183246Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=a1f0d7b58983f9dff7e3bf6cab062db3243ebafc990803a018c6a23433891404 HTTP/1.1

пример js, который я использовал, использовал полный путь. Когда я получил запрос, созданный с помощью chrome (через инструменты разработчика), путь также был заполнен. Сразу после использования firebug я получил реальный запрос, который браузер отправлял на сервер (с коротким путем).

теперь я могу продолжить пробовать решение (mqtt через веб-сокеты на esp8266) :-) если сработает, поделюсь кодом ;-)

person Fabio de Toledo    schedule 22.03.2016
comment
Спасибо. Я видел эту библиотеку, но не подключался. Попробую. - person goliatone; 18.04.2016