gpt4 book ai didi

node.js - 使用aws cognito权限规则自定义node.js api的授权

转载 作者:太空宇宙 更新时间:2023-11-04 00:10:17 25 4
gpt4 key购买 nike

我可以通过 amazon-cognito-identity-js 注册和验证用户身份和 aws-sdk实现它的过程非常简单明了。现在我在 Node.js 中内置了一些 API,我如何使用 Cognito 策略(即权限)授权这些 API,并将它们包装在登录用户周围,我已经能够获取 idToken、accessToken 和 refreshToken。

我在阅读文档和观看视频教程时遇到的其他内容是 aws-lambdaaws-api-gateway。据我所知,aws-lambda 是一种定义方法的方法,可以与 no-sql 数据库(即 AWS dynamo)和 api-gateways 进行通信,以访问这些 lambda 函数并与数据库交互,而且一切都是无服务器的。

我的问题是,如果我有自己的用 Node.js 编写的 API,并且需要将 Cognito 用户池与其集成并使用 AWS Cognito 策略、用户组和角色来保护这些资源,这可能吗?请在这方面指导我。

最佳答案

您也可以使用授权用户授权您的 Node.js API 时获得的相同身份验证 token 。它可以通过多种方式完成。其中一种方法可以在每个构造函数中调用 isAuthenticated() 方法,该方法将检查是否存在有效 token 。

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);
}
}

关于node.js - 使用aws cognito权限规则自定义node.js api的授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50045308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com