作者:温思家羽绒家纺旗舰店 | 来源:互联网 | 2022-12-09 11:27
对于node.js中的社交认证,我看到许多项目使用passport-facebook-token包而不是默认的passport-facebook.我正在努力(并努力)理解这两个包之间的差异和好处 - 以及如何从另一个中选择一个.任何见解都表示赞赏.
1> arhnee..:
答案
经过一段时间的阅读后,我相信我已经理解(至少是基础知识),并且为了别人的利益而在这里分享:
passport-facebook使用OAuth2 - 授权代码授权流程
passport-facebook-token使用OAuth2 - 隐式授权流程
有关这些内容的详细信息,请参阅有关oauth流的这篇精彩文章.可以在此SO帖子中找到为这些特定库定制的流程的一些图表.
一般混乱
在进行这项研究时已经明显的一点是,围绕身份验证最佳实践存在很多混淆.许多(可能是大多数)确切地说应该使用每种不同的PassportJS策略(或流程)并不清楚.
一些结论:
授权代码授予比隐式流更安全,因为它不直接与用户代理(通常是Web浏览器)共享第三方访问令牌.尽管很多文章,相反,这将很好地工作SPA S作为只要SPA有"专用服务器端组件",如BFF-API(如nestjs-BFF我想建立......这是是什么开始了整个调查线的第一个位置)
隐式授权表示由于将访问令牌直接暴露给用户代理(通常是Web浏览器)而导致的安全漏洞增加.用例包括没有服务器端组件的SPA应用程序.最近,行业最佳实践已逐渐远离Implicit Grant和授权代码授予,没有客户机密,但使用PCKE(Proof Key Code Exchange)......但这通常建议用于本机移动应用程序,而不是SPA.
MY NET TAKE-AWAY:
如果您的客户端有任何专用的服务器端组件,请使用授权代码授予(passport-facebook)而不是隐式授权(passport-facebook-token).
邀请到CHIME!
我希望能帮助那些发现自己有同样问题的人.如果有人发现任何关于我所写内容的错误,遗漏或错误的假设,请加入.