护照-facebook-token vs 护照-facebook

Posted

技术标签:

【中文标题】护照-facebook-token vs 护照-facebook【英文标题】:passport-facebook-token vs passport-facebook 【发布时间】:2019-01-06 15:50:25 【问题描述】:

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

【问题讨论】:

【参考方案1】:

答案

经过大量阅读,我相信我已经了解(至少是基础知识),并在此分享以造福他人:

passport-facebook 使用 OAuth2 — 授权码授予流程 passport-facebook-token 使用 OAuth2 — Implicit Grant 流程

请参阅这个伟大的article on oauth flows,了解每一项的详细信息。可以在 SO post 中找到为这些特定库定制的一些流程图。

一般混淆

在进行这项研究时,显而易见的一点是,在身份验证最佳实践方面存在很多混淆。许多人(也许是大多数人)不清楚何时应该使用每种不同的PassportJS 策略(或流程)。

一些结论

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

隐式授予表示由于将访问令牌直接暴露给用户代理(通常是网络浏览器)而导致的安全漏洞增加。用例包括没有服务器端组件的 SPA 应用程序。最近,行业最佳实践的趋势是从隐式授予转向授权代码授予,没有客户端机密,但使用 PCKE(证明密钥代码交换)......但通常是 recommended for native mobile apps, rather then SPAs。

我的网外卖:

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

邀请加入!

我希望这可以帮助那些发现自己和我有同样问题的人。如果有人发现我写的内容有任何错误、遗漏或不正确的假设,请加入。

【讨论】:

如果您想允许通过 api 上的“使用 facebook 登录”进行用户注册,您还应该使用 passport-facebook-token。 Passport.JS 链接已损坏

以上是关于护照-facebook-token vs 护照-facebook的主要内容,如果未能解决你的问题,请参考以下文章

快递发送护照到 app.use(route)

护照反序列化用户未在帆中调用

扫描护照刷护照识别设备酒店专用SDK

电子护照阅读器sdk自动识别证件的技术原理

如何辨别护照的种类

TH-OCR识别算法-电子护照识别,护照识别,证件识别