javascript - 如何使用 Cognito 身份池生成临时凭证来访问 aws 服务?
问题描述
我有一个认知用户池和身份池。我在用户池中创建了一个用户。我使用 lambda为该用户获得了令牌,即访问、刷新、id 令牌。现在我想为该用户生成临时凭证,即访问密钥和秘密访问密钥以访问 aws 服务。我怎么能这样做?这是我用来生成令牌的一段代码。
var authenticationDetails = new cognito.AuthenticationDetails(authenticationData);
var userData = {
Username : '*****',
Pool : userPool
};
var cognitoUser = new cognito.CognitoUser(userData);
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) {
console.log(result);
我应该在这方面做些什么来获得凭据?谢谢....
解决方案
在下面的代码中,我正在检索令牌以及基于联合身份的临时信用。
var data = {
UserPoolId: YOURUSER_POOL_ID,
ClientId: YOURAPP_CLIENT_ID,
};
var userPool = new cognito.CognitoUserPool(data);
var cognitoUser = userPool.getCurrentUser();
if (cognitoUser != null) {
cognitoUser.getSession(function(err, session) {
if (err) {
console.log(err);
return;
}
console.log('session validity: ' + session.isValid());
console.log('session Identity token: ' + session.getIdToken().getJwtToken());
AWS.config.region = YOURREGION;
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId : YOURIDENTITY_POOL_ID,
Logins : {
// Change the key below according to the specific region your user pool is in.
'cognito-idp.YOURREGIONNAME.amazonaws.com/YOURUSERPOOLID': session.getIdToken().getJwtToken()
}
});
AWS.config.credentials.get(function(err,data) {
if (!err) {
var id = AWS.config.credentials.identityId;
var key = AWS.config.credentials.accessKeyId;
var secretkey = AWS.config.credentials.secretAccessKey;
var sessionToken = AWS.config.credentials.sessionToken;
console.log('Cognito Identity ID '+ id);
console.log('Cognito Key '+ key);
console.log('Cognito Secret Key '+ secretkey);
console.log('Cognito SessionToken '+ sessionToken);
}
});
});
}
根据您的更改必要的参数。
希望它可以帮助你
推荐阅读
- c# - 如何在 Crystal Report C# WinForms 中使用两个或多个模型类作为数据源
- mysql - 尝试在 JavaScript 中将数据插入 MySQL 时代码未运行
- puppeteer - 在 Puppeteer 中可视化鼠标位置
- python - Bazel 使用@rules_python 给出错误
- reactjs - 使用环境变量在 AWS Beanstalk 中设置 React 应用程序
- twitter - 澄清网络的顺序和规模
- haskell - 为什么 haskell 数据构造函数不需要原语?
- google-apis-explorer - 如何使用特定版本的 Google Vision API
- vba - 在 Access 中扫描项目时减去数据库中的数量的 VB 代码
- html - 初学者编码器:希望在悬停时为整体照片提供暗淡和突出显示