Jef*_*eff 19 security authorization oauth oauth-2.0 facebook-oauth
让我们坚持使用Facebook这个例子.
我认为FB使用它自己的公共API(以及内部的API,只有他们可以使用),并且当他们使用OAuth 2时,可以安全地假设他们有"特殊客户注册"并且允许使用资源所有者密码凭据授予?
您可能知道,当他们从自己的官方应用程序登录Facebook时,他们不会弹出浏览器,询问您是否允许Facebook使用Facebook,因此如果他们自己使用OAuth,他们如何安全地执行此操作?
我们都读过Twitter让他们的消费者密钥泄露,Facebook如何避免这种情况?
我不是安全专家,也没有逆向工程经验,我只是在自己实施OAuth授权服务器的情况下,我们希望将我们的API暴露给第三方,但我们自己也有"官方"本机应用程序",我们希望使用资源所有者密码凭据授予,以获得最佳用户体验.
由于每OAuth的2规格,本机应用程序应该不包括客户端秘密,但如何使事情变得更好?我看到它的方式,如果您不包含秘密,并且您的客户端ID被解压缩并用于密码授予,则可以撤销它的唯一方法是从授权服务器中完全删除客户端ID.
我错过了一些明显的东西吗?"大人物"如何做到这一点?
小智 0
最大的区别是,官方 Facebook 应用程序知道您的用户名和密码,因此不需要弹出浏览器,因为他们可以直接进行身份验证。
作为第三方应用程序,我不能(好吧,我可以,但出于隐私原因我不会)询问用户的电子邮件和密码。作为官方应用程序,您可以执行此操作,从而直接执行登录(这可能通过未记录的 REST 端点发生)