javascript 如何从Cognito解密验证码?

qacovj5a  于 2022-12-17  发布在  Java
关注(0)|答案(1)|浏览(165)

我在request codeParameter:“{####}”中得到了这样的代码,我想将其存储在解密的数据库中。

const { plaintext, messageHeader } = await decrypt(
      keyring,
      b64.toByteArray(codeParameter),
    );
    console.log(plaintext, messageHeader);

这就是要求

{
  version: '1',
  region: 'eu-west-1',
  userPoolId: 'xxxxxxx',
  userName: 'xxxxxxxx',
  callerContext: {
    awsSdkVersion: 'aws-sdk-unknown-unknown',
    clientId: 'xxxxxxxx'
  },
  triggerSource: 'CustomMessage_SignUp',
  request: {
    userAttributes: {
      sub: 'xxxxxxx',
      'cognito:email_alias': 'xxxxxxx',
      email_verified: 'false',
      'cognito:user_status': 'UNCONFIRMED',
      email: 'xxxxxxx'
    },
    codeParameter: '{####}',
    linkParameter: '{##Click Here##}',
    usernameParameter: null
  },
  response: { smsMessage: null, emailMessage: null, emailSubject: null }
}

从我所看到的AWS DOC上的命名代码,而不是代码参数。
https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-custom-email-sender.html

gr8qqesn

gr8qqesn1#

所提供的AWS文档Custom email sender Lambda trigger中引用的lambda触发器与您正在实现的lambda(即Custom message Lambda trigger)不同。

自定义消息Lambda触发器允许您使用一些逻辑来自定义Cognito发送的电子邮件或SMS消息。在此lambda触发器中,您可以访问event.request.codeParameter,其中仅包含占位符####,Cognito在发送消息后将使用实际代码值替换该占位符。
自定义电子邮件发送者Lambda触发器允许使用第三方提供商发送电子邮件,因此,您可以访问event.request.code中的实际代码(加密格式,使用提供的代码片段解密),以构造完整的消息并根据您的方式发送。

还应记住,从文档中:
目前,您无法在Amazon Cognito控制台中分配自定义电子邮件发件人触发器。您可以在CreateUserPool或UpdateUserPool API请求中使用LambdaConfig参数分配触发器。

相关问题