Использование токена доступа, полученного от AWS cognito для защиты вызовов Web API - Начинающий

57
5

Наконец, с большим трудом, я смог заставить пользователя войти в систему. Мой код приведен ниже. Я также получил Access Token напечатанный на консоли. Так что все работает отлично.

Теперь мне нужно получить доступ к моей функции AWS API Gateway которая называется saveHospitalInformation (также к которой обращаются из https://awsxxxxxxxx/save-Hospital-Information). Как я могу отправить токен Access Token который я получил от вышеуказанного шага, к функции AWS API Gateway? Это в заголовке? Может ли кто-нибудь показать мне пример кода?

Я знаю, что Access Token действителен только 1 час. Итак, если истечет срок действия сообщения об ошибке, которое отправляется клиенту?

Я новичок в AWS и токенах доступа, так что кто-то может мне помочь здесь.

Код, который я использовал для входа пользователя, приведен ниже:

   // Cognito User Pool Id
AWSCognito.config.region = 'us-east-1';
AWSCognito.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1: XxxxxxxxxxxXxxxxxxxxxx'
});

var authenticationData = {
Username : 'username111',
Password : 'password123'
};
var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);
var poolData = {
UserPoolId : 'us-east-1_XXXXXXXXX',
ClientId : 'XXXXXXXXXXXXXXXXXXXXXX'
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var userData = {
Username : 'username111',
Pool : userPool
};
var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) {
console.log('22222222 1' );
console.log('access token + ' + result.getAccessToken().getJwtToken());
},

onFailure: function(err) {
// alert(err);
console.log('ERRR IS '+ err );
},

});

спросил(а) 2016-07-20T12:49:00+03:00 4 года, 2 месяца назад
1
Решение
69

Извиняюсь за отсутствие примеров для ваших конкретных проблем. Существует множество способов интеграции этих сервисов, поэтому вы не можете найти примеры для своего конкретного случая использования.

Позвольте мне попытаться ответить на ваш вопрос по частям:

Как я могу отправить токен доступа, который я получил от вышеуказанного шага, к функции AWS API Gateway? Это в заголовке? Может ли кто-нибудь показать мне пример кода?

В настоящее время у вас есть 2 варианта:

Используйте Cognito Federated Identity для генерации учетных данных AWS. См. Документацию Cognito для создания документации учетных данных и документации API Gateway для интеграции этого поставщика учетных данных с сгенерированным Javascript SDK. Используйте специальный авторизатор API Gateway для проверки маркера доступа самостоятельно. У нас есть пример авторизаторов, которые будут проверять JWT, созданный Cognito.

В варианте 1 токен никогда не отправляется в шлюз API, а только в Cognito Identity. SDK должны управлять жизненным циклом ваших токенов, выбирая новый токен доступа, когда истекает текущий.

В варианте 2 вы несете ответственность за передачу токена в API. Пользовательские авторизаторы в настоящее время поддерживают использование заголовка входящего запроса для передачи токена, который вы можете определить при его настройке.

Я знаю, что токен доступа действителен только 1 час. Итак, если истечет срок действия сообщения об ошибке, которое отправляется клиенту?

Это будет зависеть от выбранного вами варианта.

В варианте 1 SDK должен обработать это для вас. Если по какой-либо причине сеанс истекает, вы получите сообщение об ошибке, указывающее, что пользователю необходимо снова войти в систему.

В варианте 2 в настоящее время пользовательские авторизаторы возвращают только 403, если вы вернете ошибку. Мы стремимся улучшить этот опыт, но я не могу зафиксировать расписание этих обновлений.

ответил(а) 2016-07-20T19:23:00+03:00 4 года, 2 месяца назад
41

недавно мне пришлось иметь дело с аутентификацией OAuth2, но я не знаю AWS. Если вы находитесь в той же ситуации, вот пример HTTP-запроса с токеном: GET/resource HTTP/1.1 Host: server.example.com Авторизация: Носитель mF_9.B5f-4.1JqM


Если это полезно, больше документации об этом здесь

ответил(а) 2016-07-20T12:57:00+03:00 4 года, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема