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