我正在尝试开发一个React应用程序,允许用户使用他们的Azure AD帐户和他们的Facebook帐户登录。
首先,我不明白“用户”这两个标签 池和联盟身份“。我是否需要两者来完成它或 只是用户池就足够了吗?
我的目标只是身份验证。我不想允许用户访问任何AWS服务。我只想要身份验证令牌。
我已经让用户使用联盟身份和Facebook SDK通过Facebook登录,但我不知道如何从facebook auth获取令牌后保存用户数据。使用facebook SDK也是正确的,还是我应该使用Cognito为我处理所有身份验证方法?
答案 0 :(得分:1)
我是否需要两者来完成它或只是用户池就足够了?
如果您只需要身份验证而不需要使用AWS服务,那么Userpool就足够了。
我已经让用户通过Facebook使用联合身份识别和Facebook SDK登录,但我不知道如何在从facebook身份验证中获取令牌后保存用户数据。
您需要保存哪些用户数据。如果您希望将用户的个人资料数据保存在Cognito中,则需要使用Cognito Userpool&不是联邦身份。将Facebook直接添加到Userpool。在使用Facebook登录时,基于令牌中可用的所有用户数据在用户池中自动创建用户。请参阅this doc,了解如何直接将Facebook添加到用户池。
使用facebook SDK也是正确的,还是应该使用Cognito来处理所有身份验证方法?
取决于您的用例。如果您只想为应用程序添加身份验证,最好的方法是直接将Facebook添加到Userpool,在应用程序池中为您的应用程序创建应用程序客户端;为该应用客户端启用Facebook&使用Cognito Userpool的内置UI来使用Facebook登录。此功能(内置UI)称为App Integration。 Facebook登录成功后,将向您的应用发送有效令牌。请注意,发送到您应用的令牌将来自Cognito。
客户端 - > Userpool内置UI - >重定向到Facebook - >使用用户名+密码登录 - > Facebook将其令牌发送给Cognito(https://your-user-pool-domain/oauth2/idpresponse)--> Userpool将其自己的令牌和重定向重定向到redirect_uri中提到的URL。