如何在 Node.js 中实现 OAuth 认证

阅读时长 5 min read

OAuth 是一种用于授权的开放标准,它允许用户授权第三方应用访问他们的数据,而无需将其密码提供给第三方应用。在 Web 应用程序中,OAuth 通常用于允许用户使用他们的社交媒体帐户(如 Facebook、Twitter 或 Google)登录。

在本文中,我们将介绍如何在 Node.js 中实现 OAuth 认证。我们将使用 Passport.js 这个流行的 Node.js 库,它提供了一组易于使用的中间件,用于处理用户身份验证。

步骤 1:安装 Passport.js

首先,我们需要安装 Passport.js。可以使用以下命令在 Node.js 应用程序中安装 Passport.js:

步骤 2:选择 OAuth 提供商

在使用 OAuth 认证之前,我们需要选择 OAuth 提供商。OAuth 提供商是一个允许用户使用其帐户登录的服务。例如,如果我们希望允许用户使用他们的 Google 帐户登录我们的应用程序,则 Google 将是我们的 OAuth 提供商。

在本文中,我们将使用 GitHub 作为我们的 OAuth 提供商。我们需要在 GitHub 上创建一个应用程序,以便我们可以使用 GitHub OAuth API 进行身份验证。

  1. 转到 https://github.com/settings/applications/new

  2. 在“应用程序名称”字段中输入应用程序的名称。

  3. 在“主页 URL”字段中输入应用程序的主页 URL。

  4. 在“授权回调 URL”字段中输入应用程序的回调 URL。这是 GitHub 在用户授权之后重定向用户的 URL。在本例中,我们将使用 http://localhost:3000/auth/github/callback 作为回调 URL。

  5. 单击“注册应用程序”。

  6. 在下一个屏幕上,您将看到您的应用程序的客户端 ID 和客户端密码。将这些值保存在一个安全的位置,因为我们稍后将需要使用它们。

步骤 3:配置 Passport.js

现在,我们需要配置 Passport.js。我们将使用 passport-github2 这个 Passport.js 的插件来处理 GitHub OAuth 认证。

  1. 使用以下命令安装 passport-github2

  2. 在 Node.js 应用程序的代码中,添加以下代码:

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

    在上面的代码中,我们使用 passport-github2Strategy 类创建了一个新的身份验证策略。我们将 clientIDclientSecret 替换为我们在 GitHub 上创建的应用程序的值。我们还指定了回调 URL,该 URL 将在 GitHub OAuth API 身份验证后重定向用户。

    function(accessToken, refreshToken, profile, done) 中,我们将处理用户身份验证。在本例中,我们将在控制台上打印用户的 GitHub 用户名:

  3. 在 Node.js 应用程序的路由中,添加以下代码:

    在上面的代码中,我们使用 passport.authenticate 中间件处理 GitHub OAuth 身份验证。我们还指定了 scope,这是要请求的 GitHub OAuth API 范围。在 passport.authenticate 成功后,我们将在回调函数中重定向用户。

步骤 4:测试 OAuth 认证

现在我们已经完成了 OAuth 认证的设置。我们可以使用以下步骤测试 OAuth 认证:

  1. 启动 Node.js 应用程序。

  2. 转到 http://localhost:3000/auth/github,这将重定向您到 GitHub,要求您授权访问您的 GitHub 帐户。

  3. 授权后,您将被重定向回 Node.js 应用程序,并在控制台上看到您的 GitHub 用户名。

恭喜!现在您已经成功地在 Node.js 中实现了 OAuth 认证。如果您想要更深入地了解如何使用 Passport.js 和 OAuth 认证,请查看 Passport.js 的文档。

Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67d8ca8aa941bf7134f5d45b

Feed
back