对于使用我们平台的用户,我们希望营销团队能够像使用用户一样使用该应用程序。这样一来,我们的演示/入门课程就可以提前设置所有内容。
Cognito是否支持使用一个帐户登录并获得另一个帐户的访问权限?我们试图避免在Dynamo面前使用自己的身份验证,而只使用Cognito的形式。
答案 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不支持。我使用以上技术来解决此问题。