Nodejs + Hapi + SSL/TLS + OAUTH2 + JWT 作为承载

Posted

技术标签:

【中文标题】Nodejs + Hapi + SSL/TLS + OAUTH2 + JWT 作为承载【英文标题】:Nodejs + Hapi + SSL/TLS + OATH2 + JWTs as Bearer 【发布时间】:2016-01-09 23:11:18 【问题描述】:

我想要完成的是尽可能多地创建一个写在 NodeJS 上的安全 API,它必须在移动设备上使用。

我们从 Comodo 购买了一个 SSL 证书,用于具有多个子域的单个域,证书由我的 VPS 安装和配置提供者。

我试图找到一些集成 nodejs + hapi + oath2 与 JWTs + SSL/TLS 的 tuts强>。

【问题讨论】:

为什么同时使用 SSL/TLS 和 OAuth2 + JWT。似乎是三因素身份验证。这是降低服务器性能。尽量使用一个。 SSL/TLS 不是关于身份验证,而是关于传输层安全。无论身份验证方法如何,都应始终使用 SSL/TLS。 【参考方案1】:

对于 Hapi 中的 JWT 身份验证,您可以使用hapi-auth-jwt2。还有一些其他的 JWT 插件,但这似乎是最成熟的一个。有关如何配置它的文档和示例,请参阅他们的 Github 页面。

要设置 SSL/TLS/HTTPS,您可以查看示例 here。基本上,您设置了两个 Hapi 连接:一个带有用于 HTTP 流量的端口,一个带有用于 HTTPS(即 SSL/TLS)流量的端口。

另外,我推荐阅读dwyl's introduction on JWT(有很多这样的介绍,但是这个简短易懂,恕我直言)。

【讨论】:

感谢您的回答,但这个问题是 6 个月前提出的。 1. 我们使用的方法是 nginx 通过 SSL/TLS 处理流量和通过 localhost http 到 nodejs 服务器的代理请求。 2. 第一个授权服务器(oauth2 服务器使用为 express 编写的 oauthjs/node-oauth2-server) 3. 第二个资源服务器(我们在 hapi 上编写的主要 Web 服务) 4. 在 hapi 服务器上使用一个简单的库来解析 JWT 令牌。

以上是关于Nodejs + Hapi + SSL/TLS + OAUTH2 + JWT 作为承载的主要内容,如果未能解决你的问题,请参考以下文章

开源项目SMSS发开指南——SSL/TLS加密通信详解

使用 Nodejs (Hapi.js) 和 Prisma 的 Docker 中的 ConnectionError

SSL/TLS

starttls 与ssl的区别

Express/Koa/Hapi

SSL/TLS 协议介绍