护照-facebook-令牌vs护照-facebook

时间:2018-07-30 11:42:33

标签: node.js facebook passport.js

对于node.js中的社交身份验证,我已经看到许多项目使用passport-facebook-token软件包而不是默认的passport-facebook软件包。 我正在尝试(并且正在努力)理解这两个软件包之间的区别和好处-以及如何从另一个中选择一个。任何见解都很感激。

1 个答案:

答案 0 :(得分:5)

答案

经过一番阅读,我相信我已经了解了(至少是基础知识),并且在这里分享是为了其他人的利益:

  • passport-facebook 使用 OAuth2-授权代码授予
  • passport-facebook-token 使用 OAuth2-隐式授予

请参阅此出色的article on oauth flows,以获取每一个的详细信息。在这些SO post中可以找到为这些特定库定制的一些流程图。

一般性矛盾

在这项研究中变得显而易见的事情是,围绕身份验证最佳实践存在很多困惑。目前尚不清楚许多(也许大多数)何时应该使用每种不同的PassportJS策略(或流程)。

一些结论

  • 授权代码授予比隐式流程更安全,因为它不直接与用户代理(通常是网络浏览器)共享第三方访问令牌。尽管有许多相反的文章,但只要SPA具有“专用的服务器端组件”(例如BFF-API(例如{{3}),该就可以适用于SPA 。 }我正在尝试构建……这是从一开始就开始进行整个调查的原因

  • 隐式授予表示由于将访问令牌直接暴露给用户代理(通常是Web浏览器)而增加了安全漏洞。用例包括没有服务器端组件的SPA应用程序。最近,行业最佳实践已经从隐式授予转向了授权代码授予,没有客户机密,但是有了PCKE(证明密钥代码交换)...但是通常是nestjs-bff

    < / li>

我的外网:

如果对客户端有专用的服务器端组件,请使用授权代码授予(passport-facebook)而不是隐式授予(passport-facebook-token)

邀请加入!

我希望对其他遇到与我一样的问题的人有所帮助。如果有人发现关于我所写内容的任何错误,遗漏或不正确的假设,请输入提示音。