AWS Cognito-社交登录选项行为

时间:2018-12-20 13:52:14

标签: android ios facebook amazon-web-services amazon-cognito

我们已经为面向消费者的应用程序(iOS,Android和React Native Web应用程序)实现了社交注册和登录选项,并且我们正在使用AWS Cognito和FB OAuth来处理身份验证用户。

我们还没有开始,但是已经找到了通过此方法对用户进行身份验证的“问题”。我在这方面只具备基本的技术知识,因此请原谅我使用的任何虚拟语言。

本质上,要求我们的应用仅提示用户输入其Facebook凭证(用于注册或登录) IF IF strong>他们没有该浏览器上的有效会话并已登录。

例如

  • 如果用户已在该浏览器上登录FB并想要登录到我们的应用程序,则我们的应用程序能够“看到”有活动的FB登录名,利用该信息对用户进行身份验证并将其登录到我们的应用程序中。 / li>
  • 如果用户不是在该浏览器上登录FB并想要登录到我们的应用程序,则我们的应用程序可以“看到” 没有处于活动状态FB登录并因此提示用户提供其FB凭据以对其进行身份验证。假设他们成功执行了此操作,然后将其登录到我们的应用程序。

如果用户退出我们的应用程序,然后稍后返回并想要再次登录,则运行上述“测试”以检查我们是否可以立即对其进行身份验证,或者是否需要提示他们提供FB凭据。 / p>

我们目前从技术合作伙伴那里得到的理解是不可能的,但是渴望了解是否有人能够使用我们正在使用的技术做到这一点?

最后,是否有人成功将iOS和Android的FB SDK与AWS Cognito一起成功使用,以允许其应用使用本机FB应用(在设备上)作为认证(vs 。将它们推送到用户必须输入FB凭据的网页上)

谢谢, 汤姆

2 个答案:

答案 0 :(得分:0)

作为OAuth 2.0的一部分(您未指定),该流将通过浏览器进行路由。身份提供者将有权访问存储在浏览器中的cookie,并且应该能够在任何活动会话中进行拾取。除非您实现了自己的Cookie存储或浏览器,否则您不必担心。

FB SDK提供登录行为的选项,范围从从Facebook应用程序读取会话到浏览器。这些文件记录在AndroidiOS中。

答案 1 :(得分:0)

除了@donkon已经指出的内容之外,您的本机应用程序将无权访问执行授权的用户代理(浏览器)中存储的任何凭据。这是预期的行为,可以提高安全性。

当您的客户端需要获取您的 应用的客户端凭据(又称访问令牌)并且必须通过外部IdP(在此为FB)对用户进行身份验证时,通常会在用户代理中运行此身份验证过程。该站点的行为取决于IdP,并且可以通过调用IdP的URL中作为查询参数提供的选项进行某种程度的定制。请注意,FB登录既不完全符合OAuth2也不符合OIDC。

对于Facebook登录,用于定制流的相关参数为auth_type,类似于与OIDC一致的IdP的prompt选项。有效值当然也取决于供应商:reauthenticatehttpsrerequest

仍然存在问题,您如何自定义AWS Cognito注册和登录流程,以将参数转发到FB登录ID。我自己无法回答这个问题,因为到目前为止我还没有使用过AWS Cognito。

但是据我所知,您的要求无法100%满足,因为您的应用无法“看到”用户代理中存在有效的会话。但是重要的是,从UX的角度来看,行为是否可以接受-当然,最重要的是,它必须是安全的。

参考:

https://developers.facebook.com/docs/facebook-login/reauthentication/ https://developers.facebook.com/docs/facebook-login/permissions/requesting-and-revoking/