我们已经为面向消费者的应用程序(iOS,Android和React Native Web应用程序)实现了社交注册和登录选项,并且我们正在使用AWS Cognito和FB OAuth来处理身份验证用户。
我们还没有开始,但是已经找到了通过此方法对用户进行身份验证的“问题”。我在这方面只具备基本的技术知识,因此请原谅我使用的任何虚拟语言。
本质上,要求我们的应用仅提示用户输入其Facebook凭证(用于注册或登录) IF 和 IF strong>他们没有该浏览器上的有效会话并已登录。
例如
如果用户退出我们的应用程序,然后稍后返回并想要再次登录,则运行上述“测试”以检查我们是否可以立即对其进行身份验证,或者是否需要提示他们提供FB凭据。 / p>
我们目前从技术合作伙伴那里得到的理解是不可能的,但是渴望了解是否有人能够使用我们正在使用的技术做到这一点?
最后,是否有人成功将iOS和Android的FB SDK与AWS Cognito一起成功使用,以允许其应用使用本机FB应用(在设备上)作为认证(vs 。将它们推送到用户必须输入FB凭据的网页上)?
谢谢, 汤姆
答案 0 :(得分:0)
作为OAuth 2.0的一部分(您未指定),该流将通过浏览器进行路由。身份提供者将有权访问存储在浏览器中的cookie,并且应该能够在任何活动会话中进行拾取。除非您实现了自己的Cookie存储或浏览器,否则您不必担心。
FB SDK提供登录行为的选项,范围从从Facebook应用程序读取会话到浏览器。这些文件记录在Android和iOS中。
答案 1 :(得分:0)
除了@donkon已经指出的内容之外,您的本机应用程序将无权访问执行授权的用户代理(浏览器)中存储的任何凭据。这是预期的行为,可以提高安全性。
当您的客户端需要获取您的 应用的客户端凭据(又称访问令牌)并且必须通过外部IdP(在此为FB)对用户进行身份验证时,通常会在用户代理中运行此身份验证过程。该站点的行为取决于IdP,并且可以通过调用IdP的URL中作为查询参数提供的选项进行某种程度的定制。请注意,FB登录既不完全符合OAuth2也不符合OIDC。
对于Facebook登录,用于定制流的相关参数为auth_type
,类似于与OIDC一致的IdP的prompt
选项。有效值当然也取决于供应商:reauthenticate
,https
,rerequest
。
仍然存在问题,您如何自定义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/