Facebook如何认证/授权他们的官方本地客户?



让我们以Facebook为例。

我假设FB使用它自己的公共API(以及内部API,只有他们可以使用),并且因为他们使用OAuth 2,假设他们有"特殊的客户端注册"是否安全?是否允许使用资源所有者密码凭据授予?

你可能知道,当从他们自己的官方应用程序登录Facebook时,他们不会弹出浏览器,询问你是否允许Facebook使用Facebook,所以如果他们自己使用OAuth,他们是如何安全地做到这一点的?

我们都知道Twitter泄露了他们的消费者密钥,Facebook是如何避免这种情况的?

我不是安全专家,也没有逆向工程的经验,我只是在我自己实现OAuth授权服务器的情况下,我们希望将我们的API暴露给第三方,但由于我们自己有"官方原生应用程序",我们希望使用资源所有者密码凭据授予,以获得最佳用户体验。

根据OAuth 2规范,本机应用程序应该而不是包含客户端机密,但这如何使事情变得更好?在我看来,如果您不包含secret,并且您的客户端ID被提取并用于密码授予,那么您可以撤销它的唯一方法是从授权服务器中完全删除客户端ID。

我错过了什么明显的东西吗?"大人物们"是怎么做的?这样做呢?

最大的区别是,官方的Facebook应用程序知道你的用户名和密码,因此不需要弹出浏览器,因为他们可以直接验证。

作为一个第三方应用程序,我不能(好吧,我可以,但出于隐私原因我不会)要求用户提供电子邮件和密码。作为官方应用,你可以这样做,从而直接执行登录(这可能通过未记录的REST端点发生)

相关内容