【问题标题】:Customizing OTP Authentication flow with AWS Amplify使用 AWS Amplify 自定义 OTP 身份验证流程
【发布时间】:2021-10-06 19:08:06
【问题描述】:

我目前已将 OTP 身份验证登录流程集成到具有 Amplify 的 React Native 应用程序中。流程如下。

(我按照article 中提供的指南进行操作)

但现在我需要提供将 OTP 代码发送到用户输入的电子邮件地址的选项,以防手机号码未收到该代码。

最初的想法是通过发送email 属性来通过放大Auth.signUp 来触发create auth challenge lambda 函数。

import Auth from '@aws-amplify/auth';

const sendVerificationToEmail = async (phone: number, email: string, password: string) => {
  await Auth.signUp({ 
      username: phone, 
      password, 
      attributes: { 
         email 
      } });
} 

然后可以将 lambda 函数修改如下,以发送电子邮件或短信,

...

const email = event.request.userAttributes.email;

if (email) {
  // Logic to send OTP verification code via SES
} else {
  // Logic to send OTP via SNS
}

但这是不可能的,因为我们已经在 cognito 用户池中创建了一个用户。此属性不会传递给 lambda 函数。

实现这一目标的正确方法是什么?

【问题讨论】:

    标签: amazon-web-services amazon-cognito aws-amplify amazon-sns amazon-ses


    【解决方案1】:

    最简单的方法是,为自定义流程设置 lambda 函数。

    1. 创建自定义方法以生成 OTP 并将其保存到表中并 然后使用 SES 将 OTP 发送到电子邮件。

    2. 创建自定义方法来验证 OTP。

    3. 从表中检查 OTP 并进行验证。

     if(SUCCESS)
            use admin to mark as verified
    

    https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html

    【讨论】:

    • 恕我直言,这不是一个好方法。在当前的实现中,我们没有涉及到持久化 OTP 代码的数据库。
    • 您可以使用 twilio 发送并验证 OTP。 @PasinduDilshan
    猜你喜欢
    • 2021-03-23
    • 2019-02-15
    • 2019-04-20
    • 2020-09-08
    • 2019-06-12
    • 2021-03-17
    • 2019-11-03
    • 2016-07-09
    • 2022-06-28
    相关资源
    最近更新 更多