【问题标题】:Get Cognito verification code in lambda to send SMS using local provider在 lambda 中获取 Cognito 验证码以使用本地提供商发送短信
【发布时间】:2019-09-23 22:33:14
【问题描述】:

我想在不使用 AWS SNS 的情况下使用我所在国家/地区的本地提供商将验证码作为 SMS 发送到用户手机。

我在 CustomMessage 中有一个触发器,并且 lambda 函数工作正常。但我的问题是我无法在 lambda 函数中找到验证码。只能找到 {####} 的 codeParameter。

那么如何获取验证码以使用本地提供商发送它?

【问题讨论】:

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


    【解决方案1】:

    您需要在这种情况下实现自定义身份验证。因为 Cognito 不会与你分享这个秘密。我们已经使用 Cognito 自定义身份验证机制实现了自定义身份验证场景。

    您可以使用 DefineAuth、CreateAuth 和 VerifyAuth 触发器来实现。请参考以下流程。

    https://aws.amazon.com/blogs/mobile/customizing-your-user-pool-authentication-flow/

    【讨论】:

    • 好的。我会查的。谢谢
    【解决方案2】:

    对于那些寻找替代解决方案的人,我建议使用 Cognito 的自定义 SMS Sender 触发器。当您使用自定义 SMS 触发器时,您不必实现自定义身份验证机制。

    自定义 SMS Sender 触发器将使您能够获取加密代码参数,然后您可以使用您为用户池配置的 KMS 密钥对其进行解密。

    您可以遵循的步骤:

    1. 创建一个 KSM 密钥。
    2. 创建自定义 SMS Sender lambda 函数。该函数应该能够执行 kms:decrypt 操作。
    3. 在 lambda 函数中实现您的自定义短信逻辑。由于您现在有了代码参数,这将非常容易。
    4. 授予您的用户池访问权限以调用自定义短信发送功能。
    5. 为您的用户池设置自定义短信发送者触发器。当您这样做时,您还需要设置 Cognito 将使用的 KMS 密钥。您可以使用 aws-cli 来执行此操作。

    参考资料:

    Official documentation

    Terraform 目前不支持自定义短信发送器触发器。有一个open issue关于这个

    Aws cli update user pool

    【讨论】:

      猜你喜欢
      • 2021-09-25
      • 1970-01-01
      • 2021-11-01
      • 2021-04-06
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-08
      相关资源
      最近更新 更多