联合身份验证登录上的AWS Cognito Pre身份验证Lambda触发器

时间:2020-05-13 06:02:36

标签: amazon-cognito

在我的项目中,我们集成了一些联合身份验证提供程序(例如Outlook)。因此,只要用户通过有效的已配置联盟域名登录就没有问题,但是只要用户尝试使用不受支持(不集成)的域名(例如XXX@gmail.com)通过联盟登录,cognito就会重定向到相同的域名登录页面,而不会显示任何错误消息“ Unsupported Domain”。 为了处理错误,我们想到了触发预身份验证lambda,但是联邦登录流程不会触发预身份验证lambda。它仅触发通过Cognito用户身份池的登录。 问题是,是否有其他方法可以触发AWS Cognito中的联盟登录流程的预身份验证lambda,以处理不支持的联盟用户域名尝试时的错误消息?

3 个答案:

答案 0 :(得分:0)

您可以创建类似的lambda函数,例如为进行预身份验证检查而触发的lambda函数,然后在通过联盟登录之前通过API网关调用它。

答案 1 :(得分:0)

我正在一个项目中,每当有新用户注册时,我们都必须在DynamoDb中添加一个用户,我们提供Google,Azure和(电子邮件,密码)作为登录/注册的选项。让我们直接说清楚。我通过将lambda附加到Cognito的POST_CONFIRMATION_TRIGGER并映射身份属性,然后将这些值保存在我的DynamoDb中来解决了这个问题,虽然效果很好,但是我不得不花2个晚上来弄清楚这一点。

如果您想知道如何实现这一目标,请告诉我。 技术堆栈:AWS放大,AppSync,Cognito,dynamoDb,lambda

PS。 POST_CONFIRMATION触发器仅在第一次工作。

答案 2 :(得分:0)

预身份验证触发器将触发联合登录。但是,根据its aws doc,如果用户不存在于用户池中,则不会发生预身份验证触发。

Note
Triggers are dependant on the user existing in the user pool before trigger activation.

您成功联合登录的用户在cognito中还不存在,登录成功后会添加到cognito池中。

由于 cognito 会将联合用户添加到其用户池中,因此这是一个注册事件。您应该改用 pre-sign-up trigger。联合登录将按预期触发您的预注册 lambda。