在 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_verified
true
,它会在不触发 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 AmplifyAuthenticator 设置可选 MFA?
AWS Amplify/Cognito - 一种仅在用户首次登录时设置 TOTP MFA 的方法
如果用户在 AWS Cognito TOTP AssociateSoftwareToken MFA 有效禁用后退出应用程序