2016-07-20 2 views
0

Наконец, с наибольшей трудностью я смог сделать работу пользователя входа в систему. Мой код приведен ниже. Я также получил Access Token, напечатанный на консоли. Так что все работает отлично.Использование токена доступа, полученного от AWS cognito, для защиты вызовов Web API - Beginner

Теперь мне нужно получить доступ к моей функции 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); 
    }, 

}); 

ответ

0

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

Если это полезно, более подробную информацию об этом here

+0

Благодарим вас за ответ. Я посмотрю. К сожалению, AWS не располагает хорошей документацией, которая объясняет это, ни службу поддержки, которая могла бы помочь. Я сам разбираюсь в большинстве проблем, я умею писать лучшие учебники, чем сотрудники Amazon. Я надеюсь сделать это в ближайшие несколько недель. – Illep

+0

Мы работаем над документами :) –

2

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

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

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

У вас 2 варианта:

  1. Использование Cognito федеративной идентификации для создания учетных данных АМС. См. Cognito documentation для создания поставщика учетных данных и API Gateway documentation для интеграции этого поставщика учетных данных с сгенерированным Javascript SDK.
  2. Используйте API-шлюз custom authorizer, чтобы проверить токен доступа самостоятельно. У нас есть example authorizers, который будет проверять JWT, сгенерированный Cognito.

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

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

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

Это будет зависеть от варианта, который вы выбрали выше.

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

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

+0

Спасибо. Я посмотрю. У меня есть еще один вопрос, который также связан с этим. ** Время от времени **, несмотря на ввод правильного имени пользователя и пароля, я использую, чтобы получить сообщение об ошибке «NotAuthorizedException: неправильное имя пользователя или пароль». Это ошибка? .. Также пользовательский логин занимает много времени. Это тоже ошибка? – Illep

+0

@Illep, пожалуйста, напишите подробности на форумах Cognito, и кто-то может изучить это. –

Смежные вопросы