Facebook oauth流量优于直接访问令牌

时间:2016-08-02 15:17:53

标签: facebook authentication oauth-2.0

Fb身份验证过程似乎是:

  • 在fb auth页面上打开一个弹出窗口,如果授予了权限,则会使用代码ping我的服务器
  • 然后我可以使用我的app secret(来自我的服务器)交换访问令牌的代码

这个获得的访问令牌最终会过期,然后我只需要用户再次登录以提供更新的访问令牌。

但是在使用FBSDKLoginKit的iOS上,我可以直接获得访问令牌而不涉及任何服务器。那么第一个更复杂的流程的重点是什么?为什么fb不直接向Web客户端发布访问令牌(可以将其转发到我的服务器)?为什么Web客户端和移动客户端之间的情况有所不同?

1 个答案:

答案 0 :(得分:1)

OAuth 2.0标准在breakdown of client types

中解决了这个问题
  

基于用户代理的应用

     

基于用户代理的应用程序是公共客户端,其中客户端代码从web服务器下载并在资源所有者使用的设备上的用户代理(例如,web浏览器)内执行。协议数据和凭证可以轻松访问(并且通常可见)资源所有者。由于此类应用程序驻留在用户代理中,因此它们可以在请求授权时无缝使用用户代理功能。

     

原生申请

     

本机应用程序是在资源所有者使用的设备上安装和执行的公共客户端。资源所有者可以访问协议数据和凭证。假设可以提取应用程序中包括的任何客户端认证凭证。 另一方面,动态发布的凭证(如访问令牌或刷新令牌)可以获得可接受的保护级别。至少,这些凭证受到保护,以免受应用程序可能与之交互的恶意服务器的影响。在某些平台上,这些凭据可能会受到驻留在同一设备上的其他应用程序的保护。 [强调我的]

显然,Facebook正在遵循这一建议并假设原生应用程序 - 而不是Web应用程序 - 可以保护访问令牌。