此错误表示Cognito的身份验证检测到传递的ID令牌中缺少有效的受众。为解决此问题,您需要在代码中设置正确的Cognito受众。
以下是一个示例代码,展示如何在AWS SDK for JavaScript中设置Cognito受众:
var AWS = require('aws-sdk'); var AmazonCognitoIdentity = require('amazon-cognito-identity-js');
var poolData = { UserPoolId: 'your_user_pool_id', ClientId: 'your_client_id' };
var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
var cognitoUser = userPool.getCurrentUser(); if (cognitoUser != null) { cognitoUser.getSession(function(err, session) { if (err) { console.log(err); return; } console.log('session validity: ' + session.isValid()); AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'your_identity_pool_id', Logins: { 'cognito-idp.your_region.amazonaws.com/your_user_pool_id': session.getIdToken().getJwtToken() } }); var s3 = new AWS.S3(); s3.listBuckets(function(err, data) { if (err) { console.log(err, err.stack); } else { console.log(data); } }); }); }
要解决此问题,请确保您的Cognito身份池包含在您请求的受众中,并且您在代码中为正确的受众设置OAuth 2.0客户端。另外,请确保您的ID令牌已在过期之前成功检索和验证。
上一篇:AWSCognito/DynamoDB存在问题(不支持未经身份验证的访问)。
下一篇:AWSCognito:在执行AdminLinkProviderForUser操作后,主帐号上的电子邮件地址未验证。