我可以通过amazon-cognito-identity-js注册和验证用户身份
和aws-sdk以及实现它的过程非常简单明了。现在我在node.js中构建了很少的API,如何使用Cognito策略(即权限)对这些API进行授权,并将它们包装在已登录的用户中,我已经能够获得idToken
,accessToken
和refreshToken
。
我在阅读文档和观看视频教程时遇到的其他事情是aws-lambda
和aws-api-gateway
。我理解aws-lambda
是一种定义方法,可以与no-sql数据库(即AWS dynamo)和api-gateways
进行通信,以访问这些lambda函数并与DB交互,并且所有这些都是无服务器的。
我的问题是,如果我在Node.js中编写自己的API并且需要将Cognito用户池与其集成并使用AWS Cognito策略,用户组和角色保护这些资源,该怎么办?请指导我这方面。
答案 0 :(得分:1)
您可以使用在授权用户授权node.js API时获得的相同身份验证令牌。它可以通过多种方式完成。其中一种方法是在每个构造函数中调用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);
}
}