对于node.js中的社交身份验证,我已经看到许多项目使用passport-facebook-token软件包而不是默认的passport-facebook软件包。 我正在尝试(并且正在努力)理解这两个软件包之间的区别和好处-以及如何从另一个中选择一个。任何见解都很感激。
答案 0 :(得分:5)
答案
经过一番阅读,我相信我已经了解了(至少是基础知识),并且在这里分享是为了其他人的利益:
请参阅此出色的article on oauth flows,以获取每一个的详细信息。在这些SO post中可以找到为这些特定库定制的一些流程图。
一般性矛盾
在这项研究中变得显而易见的事情是,围绕身份验证最佳实践存在很多困惑。目前尚不清楚许多(也许大多数)何时应该使用每种不同的PassportJS策略(或流程)。
一些结论:
授权代码授予比隐式流程更安全,因为它不直接与用户代理(通常是网络浏览器)共享第三方访问令牌。尽管有许多相反的文章,但只要SPA具有“专用的服务器端组件”(例如BFF-API(例如{{3}),该就可以适用于SPA 。 }我正在尝试构建……这是从一开始就开始进行整个调查的原因
隐式授予表示由于将访问令牌直接暴露给用户代理(通常是Web浏览器)而增加了安全漏洞。用例包括没有服务器端组件的SPA应用程序。最近,行业最佳实践已经从隐式授予转向了授权代码授予,没有客户机密,但是有了PCKE(证明密钥代码交换)...但是通常是nestjs-bff。
< / li>我的外网:
如果对客户端有专用的服务器端组件,请使用授权代码授予(passport-facebook)而不是隐式授予(passport-facebook-token)。
邀请加入!
我希望对其他遇到与我一样的问题的人有所帮助。如果有人发现关于我所写内容的任何错误,遗漏或不正确的假设,请输入提示音。