在Cognito中,有一种方法可以从特定用户的角度登录

时间:2019-05-07 19:28:01

标签: amazon-web-services amazon-cognito

对于使用我们平台的用户,我们希望营销团队能够像使用用户一样使用该应用程序。这样一来,我们的演示/入门课程就可以提前设置所有内容。

Cognito是否支持使用一个帐户登录并获得另一个帐户的访问权限?我们试图避免在Dynamo面前使用自己的身份验证,而只使用Cognito的形式。

2 个答案:

答案 0 :(得分:1)

不幸的是,Cognito中没有这样的功能。

一种解决方法是使用AdminSetPassword API调用手动将其密码设置为管理员,然后登录其帐户。但是,这似乎不太合理,而且Amazon Cognito不直接支持问题中提到的要求。

答案 1 :(得分:0)

我本周刚刚实施了非常类似的方法。 Cognito并不真正支持它,不。但是,如果您已经承诺使用Cognito,那么如果您要从后端服务器访问Cognito,则可以进行修改。基本上,您将创建一个自定义身份验证流程。

如果该帐户尚不存在:

  • 运行AdminCreateAccount。指定临时密码。

  • 运行AdminInitiateAuth。使用临时密码登录。设置新密码。

  • 您拥有用户的令牌(即您以其身份登录)

如果该帐户已经存在:

  • 创建一个Custom Auth Flow。您基本上需要三个独立的Lambda。每个Lambda由相应的Cognito触发器(DefineAuthChallenge,CreateAuthChallenge,VerifyAuthChallenge)调用。从技术上讲,只要在调用DefineAuthChallenge时简单地选择返回令牌,就可以只使用第一个。

  • 调用AdminInitiateAuth并指定自定义身份验证流程。您可以在这里做任何事情,或多或少,例如只需对任何其他帐户的管理员身份进行身份验证即可。您可以获取目标用户令牌,也许您创建服务器会话或将其返回到前端,这取决于您的应用程序。

我知道那是一个删节版。正如我所说,可能,但不愉快。

我的用例实际上是在创建“魔术链接”,该魔术链接在使用时会创建并验证用户身份,并将其带到特定页面。这对于消除身份验证流程的摩擦(例如在营销电子邮件中)非常有用,但Cognito Flows不支持。我使用以上技术来解决此问题。