Я пытаюсь использовать AWS пользовательский интерфейс cognito и входить в систему для пользователей сайта c, размещенного на AWS S3. Я успешно могу перенаправить пользователей на свой веб-сайт c, и, поскольку я выбрал поток кода авторизации, я вижу перенаправленный URL
. Я сохраняю параметр кода в переменная myauthorizationcode .
Я пытался использовать почтальон для получения идентификатора, доступа и обновления sh токенов, следуя документации aws
В документации говорится, что почтовый запрос должен быть выполнен следующим образом
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token&
Content-Type='application/x-www-form-urlencoded'&
Authorization=Basic aSdxd892iujendek328uedj
grant_type=authorization_code&
client_id=djc98u3jiedmi283eu928&
code=AUTHORIZATION_CODE&
redirect_uri=com.myclientapp://myclient/redirect
Я не включил часть авторизации Basi c, как в примере выше в почтальоне, но я все еще был в состоянии успешно получить идентификатор токен, токен доступа и refre sh токен в этом формате -
{
"access_token":"eyJz9sdfsdfsdfsd",
"refresh_token":"dn43ud8uj32nk2je",
"id_token":"dmcxd329ujdmkemkd349r",
"token_type":"Bearer",
"expires_in":3600
}
Моя проблема заключается в том, что я пытаюсь выполнить проверку на стороне клиента, выполнив запрос POST с помощью ax ios. Ниже приведен мой фрагмент кода.
var authTokens = () => {
var promise = new Promise((resolve, reject) => {
axios.post("https://auth-alexuite.auth.us-east-1.amazoncognito.com/oauth2/token",{
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic (**base64codeof(client_id:client_secret)**)'
}
}
/*,{
'grant_type': 'authorization_code',
'client_id': 'k94***v4f************',
'client_secret': '*****idtufgvp3ka',
'code': myauthorizationcode,
'redirect_uri': 'https://myredirecturi.s3.amazonaws.com/post.html'
}*/).then(function(response){
alert('posting request sent to exchange for tokens.');
console.log('tokens: '+JSON.stringify(response));
return resolve(response);
}).catch(function(error){
console.log('error message', error);
return reject(error);
});
});
});
}
async function loadRecord(){
var tokens = await authTokens();
console.log('tokens', tokens);
}
loadRecord() ; //on click of a button this function will be called.
****************************************
Я получаю сообщение об ошибке:
error message Error: Request failed with status code 405
и в журнале сообщений токенов отображается
'tokens undefined'
Хотя он работает нормально с почтальоном, я изо всех сил стараюсь заставить его работать на моем сайте s3 stati c. Я попытался сделать запрос ax ios с авторизацией Basi c и без нее, и в обоих случаях я получаю одну и ту же ошибку.