1

我为 API Gateway 创建了一个自定义授权方,以便我可以传递 Facebook 令牌并使用 Cognito 的联合身份对其进行身份验证。

我的问题是 fb 令牌似乎过期了,所以我不断收到 403 错误。我想知道我的方法是否正确。我是否应该在每次 REST API 调用时将 Facebook 令牌作为请求标头的一部分传递给 API 网关,或者我应该传递 AWS 身份 ID。任何反馈表示赞赏。谢谢你。

var AWS = require('aws-sdk');
var cognitoidentity = new AWS.CognitoIdentity();

exports.handler =  (event, context, callback) => {

var params = {
  IdentityPoolId: 'us-west-2:xxxxxxxxxxxxxxxxx’, /* required */
  AccountId: ‘xxxxxxxxxxxxxxxxx,
  Logins: {
    'graph.facebook.com': event.authorizationToken //Token given by Facebook
  }
};
console.log(event.methodArn);
cognitoidentity.getId(params, function(err, data) {
  if (err) {
      console.log(err);
      callback(null, generatePolicy('user', 'Deny', event.methodArn));    
  }
  else{
      console.log("success");
      callback(null, generatePolicy('user', 'Allow', event.methodArn));
  }
});
};

var generatePolicy = function(principalId, effect, resource) {
var authResponse = {};

authResponse.principalId = principalId;
if (effect && resource) {
    var policyDocument = {};
    policyDocument.Version = '2012-10-17'; // default version
    policyDocument.Statement = [];
    var statementOne = {};
    statementOne.Action = 'execute-api:Invoke'; // default action
    statementOne.Effect = effect;
    statementOne.Resource = resource;
    policyDocument.Statement[0] = statementOne;
    authResponse.policyDocument = policyDocument;
}
return authResponse;
}
4

0 回答 0