在 AWS Cognito 中为 MFA 配置自定义 SMS 消息

Posted

技术标签:

【中文标题】在 AWS Cognito 中为 MFA 配置自定义 SMS 消息【英文标题】:Configure a Custom SMS Message for MFA in AWS Cognito 【发布时间】:2019-04-05 17:53:26 【问题描述】:

我正在使用 AWS Cognito 在 Web 应用程序中进行身份验证。

如果用户忘记了密码,我有一个 Lambda 函数触发器,它会发送一封自定义电子邮件,其中包含一个包含用户电子邮件地址和验证码的链接,以便他们可以单击该链接并输入新密码。

所以有一个新要求应该允许用户接收短信,但目前看起来如果您启用 MFA 发送短信,您只能在控制台区域和 Lambda 函数中自定义消息, 这个event.response.smsMessage 似乎没有做任何事情。

所以如果用户有phone_number_verifiedtrue,它会在不触发 Lambda 函数的情况下发送短信。

exports.handler = function(event, context) 

if(event.triggerSource === "CustomMessage_ForgotPassword") 
    var url = 'http://myurl.com/forgotpassword/'+ event.request.userAttributes.email+'/'+event.request.codeParameter
    event.response.smsMessage = 'Password Reset: Click the link ' + url + ' or enter Verification Code: ' + event.request.codeParameter 
    event.response.emailSubject = " Password reset";
    event.response.emailMessage = "Custom html goes here";


context.done(null, event);
;

这是目前在认知用户池中的自定义消息触发器上配置的 Lambda 函数。

【问题讨论】:

使用自定义消息 lambda 的 SMS 自定义对我有用。仅当 event.response.smsMessage 值具有某些无效值或缺少某些必需参数时,它才会被忽略。您能否在 Cognito 控制台的静态消息模板(在消息自定义项下)中硬编码相同的消息(您希望动态生成)? 【参考方案1】:

经过与 AWS 支持的长时间讨论,他们得出的决议是我的 SMS 文本超过 140 个字符。是的 140,然后不会发送 SMS,而是发送电子邮件。日志中没有错误或任何内容。

所以他们说他们会考虑在日志中添加一些内容,至少可以告诉您由于超出了字符数限制而未发送 SMS。

【讨论】:

以上是关于在 AWS Cognito 中为 MFA 配置自定义 SMS 消息的主要内容,如果未能解决你的问题,请参考以下文章

AWS Cognito - 重置用户 MFA

如何使用 AWS Cognito AmplifyAuthenticator 设置可选 MFA?

AWS Amplify/Cognito - 一种仅在用户首次登录时设置 TOTP MFA 的方法

如果用户在 AWS Cognito TOTP AssociateSoftwareToken MFA 有效禁用后退出应用程序

带有 SMS MFA 的无密码 Cognito

AWS Cognito:将自定义声明/属性添加到 JWT 访问令牌