Запрос авторизации для AWS WebSocket API Gateway с использованием AWS_IAM - PullRequest
0 голосов
/ 29 января 2020

Я установил шлюз API, используя протокол WebSocket. В настройке запроса маршрута $ connect я выбрал «AWS_IAM» в качестве метода авторизации. Веб-приложение должно подключиться к этому API WebSocket после того, как пользователь вошел в систему через Cognito. Как мне авторизовать запрос API WebSocket от JavaScript в веб-приложении? С помощью HTTP API Gateway я могу сгенерировать подпись из ключа доступа и токена сеанса, который был передан в заголовок запроса. Но я не могу передать заголовки в запросе WebSocket.

1 Ответ

1 голос
/ 31 января 2020

Я получил ответ от поддержки AWS. Мне нужно будет подписать URL WSS. Таким образом, вместо установки заголовков запросов в HTTP-запросе, информация о подписи будет передаваться по URL в параметрах строки запроса. Подписанный URL-адрес wss выглядит следующим образом: wss://API_ID.execute-api.region.amazonaws.com/dev?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ACCESSKEY/20200131/region/execute-api/aws4_request&X-Amz-Date=20200131T100233Z&X-Amz-Security-Token=SECURITY_TOKEN&X-Amz-SignedHeaders=host&X-Amz-Signature=SIGNATURE.

Чтобы создать подписанный URL-адрес, я могу использовать метод Signer.signUrl из библиотеки @ aws -amplify / core.

...