如何禁用通过身份提供商创建的 AWS Cognito 用户池帐户?

How to disable AWS Cognito User Pool account created via Identity Provider?

那里有 Cognito 用户池专家吗?我已经使用 Cognito 一段时间了,但这个让我有点难过。

据我所知,我有两个选择:

我是不是遗漏了什么明显的东西?

提前致谢!

我会说 PostConfirmation Lambda 触发器是一个很好的方法 - 但是,请改用 adminDisableProviderForUser 来禁止用户使用指定的外部(SAML 或社交)身份提供商登录

adminDisableProviderForUser

您稍后可以调用 adminLinkProviderForUser 将用户池中的现有用户帐户 link 提供给外部身份提供者。

adminLinkProviderForUser

另一种解决方案是防止用户在未完全完成注册过程时通过预身份验证 Lambda 触发器检查与您已完成的注册过程相关的唯一标识符来登录

最终对我们来说最简单的解决方案是在 Cognito 中使用 预令牌生成触发器,如下所示:

exports.handler = async (event) => {

  if(event.triggerSource==="TokenGeneration_HostedAuth") {

     //check db/api etc to see if we have a valid registration stored for user
     if(!hasCompletedRegistration) {

       //throw auth exception which we can catch on the frontend to inform user
       throw new Error("REGISTRATION_NOT_COMPLETE")
     }
  }

  return event

};

对于 username/password 登录,TriggerSource 将为 TokenGeneration_Authentication

对于 federated/social 登录,TriggerSource 将为 TokenGeneration_HostedAuth