20

我正在尝试使用 express.js 构建身份验证服务,但我还没有掌握身份验证模块的想法。

护照和oauth中间件有什么区别?它们相互依赖吗?在没有 oauth 服务器的情况下让 BearerStrategy 生成令牌以验证 BearerStrategy 是没用的吗?我走对了吗?

我已经阅读了关于 oAuth2 及其身份验证流程的信息,但我仍然对这个解耦代码感到迷茫。

我正在尝试使用刷新令牌为我的 AngularJS 前端与后端 API 通信构建资源所有者密码身份验证,并且我面临着许多 password.js 策略(Basic、Bearer、ClientPassword)的组合与 oauth2orize 在另一边.

所以,我想知道一个关于身份验证如何在 NodeJS 上工作的非常简单的解释。实际上,我知道 Express 并没有发明一种新的身份验证方式,但是这些模块太不显眼了,我需要了解它如何工作以实现它们协同工作的基础。

4

1 回答 1

51

Passport 是身份验证中间件。OAuth 是授权中间件。

要了解区别:

身份验证是确定某人确实是他声称的那个人的过程。

授权是指决定谁可以做什么的规则。例如,Bob 可能被授权创建和删除数据库,而 Bobbette 仅被授权读取。

换句话说。身份验证是您的用户名+密码。授权是您被允许做的事情。

Passport 将允许您在允许访问您的 API 之前对用户进行身份验证。它不允许(直接地,可能)检查是否允许用户在身份验证后执行操作。

查看此Wikipedia以了解有关身份验证与授权的更多信息。

Passport 没有的 OAuth 功能是它允许用户授予服务访问其个人信息的权限。它还允许用户允许或禁止某些特权( OAuth 中的范围)。

请注意,有很多 OAuth 风格。最常见的是在使用 Facebook 或 Google 进行授权时看到的具有授权类型的版本。但是还有很多其他方法,包括您提到的资源所有者密码策略。

于 2016-04-08T08:33:41.950 回答