React and Ax ios get AWS учетные данные клиента - PullRequest
0 голосов
/ 24 апреля 2020

Я использую последнюю версию реакции с топором ios и хочу получить токен аутентификации от aws / cognito. Поэтому у меня есть мой клиент и секрет клиента. Когда я отправляю запрос curl, он работает как положено, но когда я отправляю запрос через ax ios, я всегда получаю ответ в статусе 405.

Мой код выглядит следующим образом:

...
        axios({
            url: 'https://xyz.amazoncognito.com/oauth2/token?grant_type=client_credentials',
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
                'client_id': '***************',
                'client_secret': '****************'
                'redirect_uri': 'http://localhost:4200'
            }
        })
       .then((response) => {
            console.log(response);
       }, (error) => {
            console.log(error);
       });

Вместо того, чтобы устанавливать client_id, client_secret и redirect_uri в заголовки, я добавил их в URL, как

...grant_type=client_credentials&client_id=************&client_secret=*************&redirect_uri=http%3A%2F%2Flocalhost%3A4200

с тем же результатом. Есть идеи, что я делаю не так? В качестве побочного замечания: я использую ax ios для всех моих запросов API и поэтому я хотел бы остаться на ax ios и в этом случае.

Спасибо и всего наилучшего,

Balu

1 Ответ

0 голосов
/ 26 апреля 2020

Вы не передаете необходимые параметры правильно. Посмотрите на пример здесь: https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html

Необходимые заголовки будут:

Авторизация Если клиенту был выдан секрет, клиент должен передать его client_id и client_secret в заголовке авторизации через HTTP-авторизацию Basi c. Секрет в том, что Basi c Base64Encode (client_id: client_secret).

Content-Type должен всегда быть 'application / x- www-form-urlencoded'.

Другая информация будет передана как запрос параметры.

При этом не следует хранить свой клиент и секрет клиента на стороне клиента (приложение React). Если это открыто для клиента, любой может получить ваш идентификатор клиента и секрет клиента и получить токен Cognito.

...