Hapi 应用程序中如何使用 Hapi-Oauth 插件进行 OAuth 认证与授权

阅读时长 5 分钟读完

OAuth 是一种常见的身份验证和授权标准,服务提供商(例如 Google、Facebook、Twitter 等)都支持 OAuth 以实现第三方应用的授权。

Hapi 是一个流行的 Node.js Web 应用框架,Hapi-Oauth 是 Hapi 的一个插件,可以方便地实现 OAuth 认证和授权。下面将介绍如何在 Hapi 应用程序中使用 Hapi-Oauth 插件。

安装 Hapi-Oauth 插件

首先需要安装 Hapi-Oauth 插件:

创建 OAuth 应用

在开始使用 Hapi-Oauth 插件前,需要在服务提供商处创建一个 OAuth 应用并获取一些必要的信息。以 Google OAuth 为例,可以按照以下步骤创建一个 OAuth 应用:

  1. 登录 Google 开发者控制台(https://console.developers.google.com)。
  2. 创建一个新项目,在“API 和服务”部分的“凭据”页面创建一个 OAuth 应用。
  3. 在“授权范围”中选择需要的授权范围,例如“https://www.googleapis.com/auth/userinfo.email”表示获取用户的邮箱地址。
  4. 在“重定向 URI”中添加需要授权的网址,例如“http://localhost:3000/auth/google/callback”。

创建完成后,可以获取到一些必要的信息,例如客户端 ID、客户端密钥等,这些信息将在后续使用中需要。

注册 Hapi-Oauth 插件

在 Hapi 应用程序中注册 Hapi-Oauth 插件:

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

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

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

上述代码中,provider 部分指定了 OAuth 服务提供商的具体信息,name 指定了服务提供商的名称,auth 指定了认证服务的 URL,token 指定了获取 token 的 URL,scope 指定了授权范围,scopeSeparator 指定了授权范围分隔符,clientIdclientSecret 分别指定了客户端 ID 和客户端密钥,redirectUri 指定了回调地址。

添加 OAuth 路由

在 Hapi 应用程序中添加 OAuth 路由:

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

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

上述代码中,/auth/google 路由负责跳转到认证服务的授权页面,/auth/google/callback 路由负责获取 token 和用户信息并返回。在 handler 中使用 oauth 对象调用 authorize 方法获取授权地址,调用 token 方法获取 token,调用 userInfo 方法获取用户信息。请求对象 request 需要作为参数传递。

总结

通过以上步骤,就可以使用 Hapi-Oauth 插件实现 OAuth 认证和授权。这种方式可以方便地集成各种 OAuth 服务提供商,实现多种第三方登录方式,提升用户体验和安全性。

完整示例代码可通过以下链接查看:

https://github.com/michaelliao/hapi-oauth-example

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

纠错
反馈