AWS Cognito IDP(身份提供商)是AWS提供的一项服务,用于通过用户池管理您的服务的用户。 Cognito提供了多种API,并且可以通过boto3(用于AWS的Python包装器)以编程方式使用Cognito。
当用户忘记密码时,将使用forgot_password方法:
cog.forgot_password(ClientId=USER_POOL_CLIENT_ID, Username=req["username"])
这会向用户发送一封包含六位数代码的电子邮件,用户可以使用该密码来更改其密码。
问题是,我希望电子邮件包含自定义内容以及六位代码。我确信这是有可能的,必须有一种方法来拥有模板化的内容,并使用该模板化的内容向用户发送包含自定义内容的电子邮件,其中还包含六位数的代码。
有人知道,当使用boto3为AWS Cognito IDP调用forgot_password时,如何发送包含六位数代码的自定义电子邮件?
谢谢!
答案 0 :(得分:1)
Amazon Cognito在发送电子邮件或电话验证消息或多因素身份验证(MFA)代码之前调用自定义触发器,从而使您可以动态地自定义消息。
您需要创建一个lambda函数并将CustomMessage_ForgotPassword用作triggerSource。例如:
if(event.userPoolId === "theSpecialUserPool") {
// Identify why was this function invoked
if(event.triggerSource === "CustomMessage_ForgotPassword") {
// Ensure that your message contains event.request.codeParameter. This is the placeholder for code that will be sent
event.response.emailSubject = "Forgot Password";
event.response.emailMessage = "Your customized text here" + event.request.codeParameter + " and your verification code";
}
// Create custom message for other events
}
然后通过执行以下操作将此lambda函数与您的认知池集成:
AWS控制台-> Cognito->池->常规设置->触发器->自定义消息。
因此,每次用户调用忘记密码时,您的池都会触发上述lambda而不是默认的忘记密码AWS Cognito lambda。
参考