我想解释一个身份验证流程,并希望你能回答如果亚马逊认知正确的解决方案。
要求: 对于每个登录(用户名/密码,Facebook,谷歌等),应该有一个有效的用户池帐户。
Flow Facebook(不存在任何身份或用户池帐户)。
客户点击“使用Facebook登录”:
1)调用GetOpenIdToken - >使用FB AccessToken
1a)同时,使用FB AccessToken从Facebook获取电子邮件地址
2)使用生成的密码和facebook电子邮件调用AdminCreateUser
3)调用AdminInitiateAuth并获取idToken
4)调用GetOpenIdToken并为cognito用户池和facebookAccessToken添加idToken
结果:Cognito用户池中的用户和链接的联合帐户
对我来说很重要:来自4)的令牌是一个用户池令牌并包含“sub”(UUID,其中一个对我们的内部数据库很重要)
好的,那没关系,效果很好,但是:
Flow Facebook用户回来(身份和链接的用户池帐户可用)
客户点击“使用Facebook登录”:
1)调用GetOpenIdToken - >使用FB AccessToken
2)调用DescribeIdentity并获取登录列表
2a)我们可以看到有一个链接的用户池ID,不需要创建新用户
此时确切的问题是:
如果我只拥有facebookAccessToken但是链接的用户池登录,我怎样才能获得用户池令牌?
是否可以使用facebook accessToken获取该链接用户的用户池数据?
如果这是正确的流程,还是Cognito不支持此身份验证流程?
由于 烫发
答案 0 :(得分:2)
目前不支持此功能。您已在Cognito Federated Identities中创建了一个已登录链接(FB和Cognito用户池)的身份,但要使用Cognito用户池进行身份验证,您目前无法使用Facebook访问令牌。获取用户池令牌的唯一方法是使用该帐户的用户名/密码。
我们已经听到了来自多个客户的此请求,并会考虑在将来的版本中添加它。