在 Express.js 应用程序中使用 Passport.js 进行 OAuth 验证

阅读时长 7 分钟读完

OAuth 是一种授权框架,可以让用户授权第三方应用程序来访问他们的用户数据,而无需共享他们的登录凭据。Passport.js 是一个 Node.js 中间件,可以简化身份验证和授权的流程。通过结合 Express.js 和 Passport.js,可以很方便地实现在应用程序中使用 OAuth 进行验证。

1. 安装和配置 Passport.js

首先我们需要在我们的 Express.js 应用程序中安装并配置 Passport.js。我们可以使用 npm 命令安装 Passport.js:

接下来,我们需要在我们的 Express.js 应用程序中配置 Passport.js。首先我们需要引入 Passport.js:

然后我们需要配置一个中间件来初始化 Passport.js:

现在,我们就可以开始使用 Passport.js 来验证用户了。

2. 集成 OAuth 认证

下面我们将演示如何使用 Passport.js 进行 OAuth 认证。我们将以 GitHub 作为示例服务提供程序。

2.1. 注册应用程序

首先我们需要在 GitHub 上注册我们的应用程序,以获得我们的 OAuth 客户端 ID 和密钥。在 GitHub 上登录后,转到设置页面,并选择“Developer settings”>“OAuth applications”,然后单击“New OAuth App”按钮。输入应用程序名称、主页 URL 和回调 URL,并选择要访问的权限。完成后,点击“Register application”按钮即可注册应用程序。

2.2. 安装 Passport.js 的 OAuth Strategy

接下来,我们需要安装 Passport.js 的 OAuth Strategy。我们可以使用 npm 命令安装具体的 OAuth Strategy。例如,对于 GitHub,我们可以使用以下命令安装 Passport.js 的 GitHub Strategy:

我们还需要引入 GitHub Strategy:

2.3. 配置 Passport.js 的 OAuth Strategy

现在,我们可以配置 Passport.js 的 GitHub Strategy。我们需要调用 passport.use() 方法,并将新的 GitHubStrategy 作为参数传递给它。在 GitHubStrategy 的构造函数中,我们需要传入我们在 GitHub 上注册的应用程序的客户端 ID 和密钥,以及我们所需的权限。

-- -------------------- ---- -------
---------------- ----------------
    --------- ----------------- -- ------ -------- --
    ------------- --------------------- -- ------ ----------
    ------------ -------------------------------------------- -- ------ -------- ---
  --
  --------------------- ------------- -------- --- -
    -- ---------------------
    ------ -------- ---------
  -
---

2.4. 增加路由

最后,我们需要在我们的应用程序中增加路由,以调用 Passport.js 中间件和 GitHub OAuth 认证。我们可以定义一个 /auth/github 路由,其中包括两个步骤:

  1. 调用 passport.authenticate() 方法,以指定要使用的 Strategy 和请求的权限。
  2. 提供一个回调路由,以处理认证成功或失败的情况。
-- -------------------- ---- -------
-- -- ------ ----- -------
-----------------------
  ---------------------------------

-- -- ------ ----- -----
--------------------------------
  ------------------------------- - ---------------- -------- ---
  ------------- ---- -
    -- ----------------
    ------------------
  ---

完整的代码示例:

-- -------------------- ---- -------
----- ------- - -------------------
----- -------- - --------------------
----- -------------- - ------------------------------------

----- --- - ----------

-- - ------ -------------- -- ---
----- ---------------- - -----------------
----- -------------------- - ---------------------

-- --- -----------
-------------------------------

-- -- ------ --------
---------------- ----------------
    --------- ----------------- -- ------ -------- --
    ------------- --------------------- -- ------ ----------
    ------------ -------------------------------------------- -- ------ -------- ---
  --
  --------------------- ------------- -------- --- -
    -- ---------------------
    ------ -------- ---------
  -
---

-- -- ------ ----- -------
-----------------------
  ---------------------------------

-- -- ------ ----- -----
--------------------------------
  ------------------------------- - ---------------- -------- ---
  ------------- ---- -
    -- ----------------
    ------------------
  ---

-- ------
---------------- -- -- -
  ------------------------
---

现在我们就可以运行我们的应用程序,并向 /auth/github 路由发送请求,以启动 GitHub OAuth 认证。如果用户成功认证,则会将其重定向到主页。

3. 结论

本文演示了通过使用 Passport.js 和 GitHub OAuth Strategy,在 Express.js 应用程序中实现 OAuth 认证。Passport.js 可以简化身份验证和授权的流程,使我们能够轻松地使用各种身份验证策略,例如 OAuth、OpenID、SAML 等。通过这种方式,我们可以保护我们的应用程序和用户的数据,同时提供一个标准的身份验证流程,以便用户能够无缝地访问多个服务提供商。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6715c833ad1e889fe218e34e

纠错
反馈