Пользовательская авторизация api node.js с правилами разрешения aws cognito - PullRequest
0 голосов
/ 26 апреля 2018

Я могу регистрировать и аутентифицировать пользователей через amazon-cognito-identity-js и aws-sdk , и процесс его реализации был довольно простым и понятным. Теперь у меня есть несколько API, встроенных в node.js, как мне авторизовать эти API с помощью политик Cognito (т.е. разрешений) и обернуть их вошедшим в систему пользователем, где я уже могу получить idToken, accessToken и refreshToken .

Другие вещи, с которыми я сталкивался, читая документацию и просматривая видеоуроки, это aws-lambda и aws-api-gateway. Я понял, что aws-lambda - это способ определения методов, которые могут взаимодействовать с базой данных no-sql (например, AWS Dynamo) и api-gateways для доступа к этим лямбда-функциям и взаимодействия с БД, и что все это без сервера.

У меня такой вопрос: что, если у меня есть собственные API, написанные на Node.js, и мне нужно интегрировать с ним пулы пользователей Cognito и защитить эти ресурсы с помощью политик, групп и ролей AWS Cognito, возможно ли это? Пожалуйста, направьте меня в этом отношении.

1 Ответ

0 голосов
/ 02 мая 2018

Вы можете использовать тот же токен аутентификации, который вы получаете, когда вы разрешаете пользователю авторизовать ваши API-интерфейсы node.js. Это можно сделать разными способами. Одним из способов может быть вызов метода isAuthenticated () в каждом конструкторе, который проверяет, есть ли допустимый токен или нет.

export interface LoggedInCallBack{
isLoggedIn(message:string, loggedIn:boolean):void;
}


 isAuthenticated(callBack : LoggedInCallBack){
    if(callBack==null){
        throw("User login service call cannot be null");
    }
    console.log("Is authneticated");
   var cognitoUser = this.cognitoUtil.getCurrentUser();
   console.log("Is cognito user empty? " + cognitoUser);
   if(cognitoUser!=null){
       cognitoUser.getSession(function (err, session){
           if(err){
               console.log("Couldn't get session:" + err);
               callBack.isLoggedIn(err, false);
           }
           else{
               console.log("Session is: " +session);
               callBack.isLoggedIn(err, true);
           }
       })
   }
   else{
       callBack.isLoggedIn("Cannot retrieve the current user", false);
   }
}
...