OAuth 是一种常见的身份验证和授权标准,服务提供商(例如 Google、Facebook、Twitter 等)都支持 OAuth 以实现第三方应用的授权。
Hapi 是一个流行的 Node.js Web 应用框架,Hapi-Oauth 是 Hapi 的一个插件,可以方便地实现 OAuth 认证和授权。下面将介绍如何在 Hapi 应用程序中使用 Hapi-Oauth 插件。
安装 Hapi-Oauth 插件
首先需要安装 Hapi-Oauth 插件:
npm install hapi-oauth
创建 OAuth 应用
在开始使用 Hapi-Oauth 插件前,需要在服务提供商处创建一个 OAuth 应用并获取一些必要的信息。以 Google OAuth 为例,可以按照以下步骤创建一个 OAuth 应用:
- 登录 Google 开发者控制台(https://console.developers.google.com)。
- 创建一个新项目,在“API 和服务”部分的“凭据”页面创建一个 OAuth 应用。
- 在“授权范围”中选择需要的授权范围,例如“https://www.googleapis.com/auth/userinfo.email”表示获取用户的邮箱地址。
- 在“重定向 URI”中添加需要授权的网址,例如“http://localhost:3000/auth/google/callback”。
创建完成后,可以获取到一些必要的信息,例如客户端 ID、客户端密钥等,这些信息将在后续使用中需要。
注册 Hapi-Oauth 插件
在 Hapi 应用程序中注册 Hapi-Oauth 插件:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- --------- - ---------------------- ----- ------ - --- ------------- ----- ----- ----- ----------- --- ----------------- ------- ---------- -------- - --------- - ----- --------- ----- ----------------------------------------------- ------ -------------------------------------- ------ ---------- --------------- - -- --------- ---------------------- ------------- -------------------------- ------------ -------------------------------------------- - - ---
上述代码中,provider
部分指定了 OAuth 服务提供商的具体信息,name
指定了服务提供商的名称,auth
指定了认证服务的 URL,token
指定了获取 token 的 URL,scope
指定了授权范围,scopeSeparator
指定了授权范围分隔符,clientId
和 clientSecret
分别指定了客户端 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