gpt4 book ai didi

javascript - Cognito getId : NotAuthorizedException: Invalid login token. 不是有效的 OpenId Connect 身份 token

转载 作者:行者123 更新时间:2023-11-30 20:27:32 26 4
gpt4 key购买 nike

我是 Cognito 的新手(JWT token 和一般的整个身份验证)所以请原谅我提出愚蠢的问题。我正在尝试将 Cognito 用户池与身份池结合使用。我使用默认 URL ( https://testapi123.auth.us-east-2.amazoncognito.com/login?response_type=token&client_id= <>&scope=openid&redirect_uri= https://aws.amazon.com ) 登录了一个用户并获得了一个 token 。我无法弄清楚如何从此 token 获取身份 ID 以用于 getId() API。我想稍后使用它从联合身份池中获取凭据(不确定我是否也正确使用了该部分)。

作为引用,我有我的代码-

var AWS = require('aws-sdk');
var cognitoidentity = new AWS.CognitoIdentity({apiVersion: '2014-06-30'});

exports.handler = (event, context, callback) => {
// TODO implement
var params = {
IdentityPoolId: 'us-east-2:<xxxxxx>', /* required */
AccountId: 'xxxxxxx',
Logins: {
'cognito-idp.us-east-2.amazonaws.com/us-east-2_xxxxx': '<**identityID???**>',
}
};

cognitoidentity.getId(params, function(err, data) {
if (err) console.log('Error3 : ' + err, err.stack); // an error occurred
else {
console.log('retval:' + JSON.stringify(data)); // successful response
var idenId = data.idenId;

var params = {
IdentityId: idenId,
CustomRoleArn: 'arn:aws:iam::xxxxxxxxx:role/cc_admin',
Logins: {
'CognitoIdentity': 'cognito-idp.us-east-2.amazonaws.com/us-east-2_xxxxxxx'
}
};

cognitoidentity.getCredentialsForIdentity(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});

}
});
callback(null, 'Hello from Lambda 1');
};

错误 - “2018-06-06T18:59:58.614Z ce0fc216-69bb-11e8-bbfc-4fff0d953dd4 错误 3:NotAuthorizedException:无效的登录 token 。 token 签名无效。NotAuthorizedException:无效的登录 token 。 token 签名无效。”

我已经尝试解析收到的 JWT token (使用 jwt.io)。它向我显示了一些细节,但它们似乎都不是请求中使用的身份标识。我也尝试过使用整个 token 作为身份 ID。

真的需要帮助。谢谢。

最佳答案

首先,您只需要在参数中传递Identity Pool Id,getId函数就可以工作。它将返回与您的身份池关联的 IdentityId。替换

var params = {
IdentityPoolId: 'us-east-2:<xxxxxx>', /* required */
AccountId: 'xxxxxxx',
Logins: {
'cognito-idp.us-east-2.amazonaws.com/us-east-2_xxxxx': '<**identityID???**>',
}
};

var params = {
IdentityPoolId: 'us-east-2:<xxxxxx>'
}

其次,除非您拥有 idToken,即 JWT(用户池成功验证后返回给客户端的 JSON Web token ),否则您无法创建凭据。

看起来像这样..

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

您只能通过登录获得此 token ...配置 aws-cli 后在终端上运行此命令或使用 aws-sdk 并运行函数 InitiateAuth

aws cognito-idp admin-initiate-auth --user-pool-id ap-south-1_xxxxxxx --client-id AAAAAAAAAAAAAAAAAAAAA --auth-flow ADMIN_NO_SRP_AUTH --auth-parameters USERNAME="abc@123.com",PASSWORD="********" 

最后,将传递给 getCRedentials 方法“登录”键的参数函数更改为:

Logins: {
"IdentityId": <result from getId>
"cognito-idp.us-east-2.amazonaws.com/us-east-2_xxxxxxx": <your idToken>
}

关于javascript - Cognito getId : NotAuthorizedException: Invalid login token. 不是有效的 OpenId Connect 身份 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50729652/

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