【问题标题】:PreTokenGeneration Unrecognizable lambda outputPreTokenGeneration 无法识别的 lambda 输出
【发布时间】:2020-11-06 21:24:57
【问题描述】:

我正在尝试在身份令牌中添加一个帐户属性,但是当我从我的 Web 应用程序运行它时它给我带来了问题。

我一直在用测试事件测试 lambda,它工作正常,我不知道可能是什么问题,我已经尝试将响应更改为回调和上下文,但它们也不起作用。

我正在使用无服务器框架安装此触发器,我有另一个具有完全相同设置的 PostConfirmation 触发器并且它可以正常工作。给我带来麻烦的是 PreTokenGeneration。

我附上了我在函数中使用的代码:

module.exports.execute = async (event, context) => {
  const { sub } = event.request.userAttributes;

  const getUserQuery = {
    TableName: `my-table`,
    Key: { id: sub }
  };

  try {
    const data = await dynamoDb.get(getUserQuery).promise();
    console.log("DEBUG: query data", data);
    const account = data.Item.accounts.find(
      account => account.id === data.Item.currentAccountId
    );

    event.response = {
      claimsOverrideDetails: {
        claimsToAddOrOverride: {
          account: account
        }
      }
    };

    console.log("OUTPUT: ", event);
    return event;
  } catch (error) {
    console.log("ERROR:", error);
    throw Error(
      JSON.stringify({
        error: error.message
      })
    );
  }
};

这是它在我的网络应用程序中给我的错误

{"__type":"InvalidLambdaResponseException","message":"Unrecognizable lambda output"}

我做错了什么?我不知道还能去哪里看,lambda 日志告诉我一切都很好。

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-cognito


    【解决方案1】:

    account 似乎是一个对象;目前,数组和对象不能与 claimToAddOrOverride 一起使用,只能使用字符串键值对。

    尝试通过 stringify 或使用多个键(例如)来扁平化结构

    claimsOverrideDetails: {
      claimsToAddOrOverride: {
        accountId: account.id,
        accountName: account.name
        ...
      }
    }
    

    相关:How to add array values in Claims of IdToken in Cognito using claimsToAddOrOverride

    【讨论】:

      猜你喜欢
      • 2017-07-31
      • 2020-04-26
      • 2022-01-15
      • 1970-01-01
      • 2013-06-12
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      相关资源
      最近更新 更多