2

Im, играющий вокруг с Lambda, пытающийся использовать его для аутентификации веб-приложения. Я использую lambdAuth как стартер, чтобы добиться успеха. https://github.com/danilop/LambdAuthAws Lambda/Api-Gateway/Cognito working together

Я хочу иметь службу api-gateway, которая сначала разрешает член, возвращая токен из cognito. Все последующие службы в api-gateway затем каким-то образом должны принять то, что было возвращено из cognito, чтобы разрешить доступ к службе, и провалиться без него. Я немного смущен тем, как использовать когнито. Im предполагая, что вы ограничиваете свои услуги api-gateway, добавляя тег AWS_IAM к авторизации вашей службы, но я не знаю, как затем вызвать эту услугу ...?

В текущей реализации LambdAuth он выполняет всю эту клиентскую сторону (в браузере), напрямую вызывая лямбды. Он получает AWS.config.credentials, добавляет IdentityId и логины, которые возвращаются из cognito, а затем вызывает функцию лямбда, которая требует, чтобы вы вошли в систему. Как это будет работать при вызове api-gateway вместо lambda. Как мне взять то, что вернулось из cognito, и добавить его в мой служебный звонок, чтобы передать это разрешение AWS_IAM?

Любая помощь будет оценена, или если им полностью упускаете тот возможно ...

ответ

3

Для лямбда-функции обработки за авторизацию API Gateway, вам нужно будет их несанкционированным, так как пользователи не имеют еще не введен.

Для функций лямбда за шлюзом API, которые разрешены, вам необходимо передать учетные данные, полученные вами у Cognito при создании экземпляра вашего клиента.

Похоже, что вы делаете проверку подлинности разработчика, поэтому, когда вы получаете Cognito токен из ваших функций бэкенд/лямбда, в вашем приложении вам нужно будет получить учетные данные еще:

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: 'IDENTITY_POOL_ID', 
    IdentityId: 'IDENTITY_ID_RETURNED_FROM_YOUR_PROVIDER', 
    Logins: { 
     'cognito-identity.amazonaws.com': 'TOKEN_RETURNED_FROM_YOUR_API' 
    } 
}); 

Затем из учетных данных вам нужен ключ доступа, секретный ключ, и ключ сеанса создать экземпляр клиента API шлюза:

инстанцировании вашего клиента API шлюза:

var client = apigClientFactory.newClient({ 
accessKey: ACCESS_KEY, 
secretKey: SECRET_KEY, 
sessionToken: SESSION_TOKEN }); 
+0

Благодарности Все, им-ов Это поможет. Эта нижняя часть, которую я предполагаю, заключается в вызове Api Gateway из JavaScript, то, что я хочу сделать, это просто сделать обычный вызов службы обслуживания ... Я не хочу, чтобы мои клиенты загружали библиотеки AWS. Поэтому я не уверен, что эта access_key и secret_key добавляются в качестве заголовков или как это работает ... Возможно, я найду, что где-то однажды я получу свои ключи назад, спасибо – 3uPh0riC

+0

Привет @ 3uPh0riC Я за то же самое, как вы в конечном итоге решить его? – hanbzu