返回

借助 Node.js 实现对 Google 身份验证器的安全访问

后端

当今数字世界,账号安全至关重要。谷歌身份验证器(Google Authenticator)作为一款备受推崇的双因素认证工具,能够有效保障账号免遭未经授权的访问。本文将为您详细介绍如何将 Google 身份验证器集成至您的 Node.js 应用,以提高用户账号安全性。

双因素认证(Two-Factor Authentication,简称 2FA)要求用户在登录时除了输入用户名和密码外,还需要提供额外的验证信息。这使得即便攻击者窃取了用户的密码,也不能绕过双因素认证机制,从而有效提升了账号安全性。

作为一款双因素认证工具,谷歌身份验证器使用基于时间的一次性密码(Time-based One-Time Password,简称 TOTP)生成认证码。这种认证码每隔 30 秒就会更新一次,并且只能在生成后短时间内使用。攻击者即使截获了某个认证码,也无法使用它来登录账号,因为该认证码在很短的时间内就会失效。

1. 准备工作

在开始集成之前,您需要确保已经满足以下先决条件:

  • Node.js 版本 >= 8.0.0
  • npm 版本 >= 5.0.0
  • 谷歌身份验证器应用程序(可从各大应用商店下载)

2. 安装依赖

首先,我们需要安装必要的依赖。打开终端,输入以下命令:

npm install google-auth-library

该命令将安装 google-auth-library 包,它提供了对 Google 身份验证器的支持。

3. 创建项目

接下来,我们需要在谷歌云端创建一个项目。转到 Google Cloud Platform 控制台,点击“创建项目”按钮,按照提示创建一个新项目。

项目创建完成后,我们需要启用 Google 身份验证器 API。在控制台左侧导航栏中,点击“API 和服务”,然后点击“库”。在搜索栏中输入“Google 身份验证器 API”,然后点击“启用”。

4. 创建服务帐户

我们需要创建一个服务帐户,以便我们的 Node.js 应用可以访问 Google 身份验证器 API。在控制台左侧导航栏中,点击“IAM 和管理”,然后点击“服务帐户”。点击“创建服务帐户”按钮,按照提示创建一个新的服务帐户。

服务帐户创建完成后,我们需要授予它对 Google 身份验证器 API 的访问权限。点击服务帐户名称,然后点击“权限”选项卡。在搜索栏中输入“Google 身份验证器 API”,然后勾选“身份验证器.使用”权限。

5. 下载服务帐户密钥

我们需要下载服务帐户密钥,以便我们的 Node.js 应用可以连接到 Google Cloud Platform。点击“密钥”选项卡,然后点击“添加密钥”按钮。选择“JSON”作为密钥类型,然后点击“创建”按钮。

密钥文件将被下载到您的计算机上。请妥善保管此文件,不要将其泄露给任何人。

6. 配置 Node.js 应用

现在,我们可以开始配置我们的 Node.js 应用了。首先,创建一个新的 Node.js 项目,然后在项目根目录下创建一个名为 app.js 的文件。在 app.js 文件中,输入以下代码:

const express = require('express');
const GoogleAuth = require('google-auth-library');
const app = express();

app.get('/generate-secret', (req, res) => {
  const auth = new GoogleAuth.GoogleAuth({
    scopes: ['https://www.googleapis.com/auth/cloud-platform']
  });

  const client = await auth.getClient();
  const url = await client.generateAuthUrl({
    audience: 'your-client-id'
  });

  res.send({ url });
});

app.post('/verify-code', (req, res) => {
  const auth = new GoogleAuth.GoogleAuth({
    scopes: ['https://www.googleapis.com/auth/cloud-platform']
  });

  const client = await auth.getClient();
  const isValid = await client.verifyOtp(req.body.code, 'your-secret');

  res.send({ isValid });
});

app.listen(3000);

7. 运行 Node.js 应用

现在,我们可以运行我们的 Node.js 应用了。在终端中,输入以下命令:

node app.js

您的应用将在 3000 端口上运行。

8. 使用 Google 身份验证器

现在,您可以使用 Google 身份验证器应用程序来验证您的账号了。首先,打开 Google 身份验证器应用程序,点击“+”号按钮,然后选择“扫描条形码”。将您的手机摄像头对准显示在浏览器中的二维码,应用程序将自动扫描并添加您的账号。

当您下次登录您的账号时,您需要输入您的用户名和密码,然后使用 Google 身份验证器应用程序生成的认证码来完成登录。

9. 总结

以上就是如何将 Google 身份验证器集成至 Node.js 应用的详细教程。通过这种方式,您可以轻松为您的用户提供双因素认证功能,从而显著提升账号安全性。