Caddy NodeJS登录系统

Caddy NodeJS login system

我最近设置了 Caddy 来反向代理我在 Internet 上的所有服务。为了让一切井井有条,我第一次开始使用 NodeJS 来呈现带有所有服务链接的自定义主页。问题是我想在主页级别的节点中实现一个登录系统并对用户进行身份验证,以便他可以连接到 Caddy 代理的所有服务。

我的想法是实现一个基于 cookie 的登录系统并不断更新 Caddy,这样对于站点的每个端点,只有携带有效授权 cookie 的用户才能访问。

我在网上查看了如何创建登录系统,发现了一些使用 passportjs 和本地策略的资源,我不知道如何从中创建令牌和授权 cookie。我找到了一个名为 passport-cookie 的库,但我再次需要在每次登录时获得授权 cookie 的列表,以将其提供给 Caddy 并保护不受节点控制的端点。我该怎么做?

有几个选项可以实现您的目标:

  • 基本授权

保护您的服务的最简单解决方案是基本身份验证,它基本上告诉您的用户浏览器要求输入用户名和密码,然后将其发送到服务器。

https://caddyserver.com/docs/caddyfile/directives/basicauth

尽管设置起来非常快,但您会失去一些好处,例如精细的访问控制和用户更改其 username/password 的能力。

  • OAuth

OAuth 允许您的用户使用他们自己的帐户登录,例如 Google 或 Facebook。 看看这个完整的 Caddy 身份验证系统:https://github.com/greenpau/caddy-auth-portal

  • JWT - 构建您自己的

最后,如果您想将此挑战作为学习机会,可以看一下基于 JWT 的身份验证。 看看这个模块:https://github.com/greenpau/caddy-auth-jwt

这将使您能够在 node.js 应用程序中发布 JWT 令牌,然后由 Caddy 验证。


显然,所有这些解决方案都需要一些研究和技巧,我会按升序排列它们的实施难度,您构建自己的 Auth 系统的计划是最困难的。