使用 NGINX 进行身份验证

使用 NGINX 进行身份验证

我正在运行一组 NGINX 代理,使用带有 htpasswd 文件的基本浏览器身份验证来为用户提供身份验证。

我用 Laravel 构建了一个小型应用程序,用于对用户进行身份验证并向他们显示这些 nginx 代理的链接列表。

我正在考虑将 nginx 身份验证更新为类似 JWT 令牌的东西,但是我不确定如果没有 API 来验证实际令牌本身,它是否足够安全?

我正在考虑的另一个选择是 LDAP 解决方案,并让 Laravel 和 NGINX 代理都使用 ldap 身份验证。

nginx 代理后面的应用程序没有任何身份验证,我们目前没有打算为它们添加任何身份验证

答案1

Nginx 包括请求授权模块, 哪个

根据子请求结果实现客户端授权,如果子请求返回2xx响应码,则允许访问,如果返回401或403,则拒绝访问并返回相应的错误码,子请求返回的其他响应码均视为错误。

对于 401 错误,客户端还会从子请求响应中收到“WWW-Authenticate”标头。

我想到两种可能性:

  • 您可以扩展现有的 Laravel 应用程序,以便可以从 Nginx “链接到它”,这会将用户带到“登录”页面,并且如果通过身份验证,则向 Nginx 发送“200 OK”响应。
  • 例如,您可以利用此技术检查第一个现有的解决方案Nginx LDAP 身份验证

详细说明第二个答案:

  • 如果帐户数据确实存储在 LDAP 中,您可以编写一个脚本,例如通过 cron 定期执行,该脚本将数据从 LDAP 中提取出来并将其写入文件中htpasswd以供 Nginx 读取。

答案2

Nginx 没有内置方法来执行此操作。它只能执行 htpasswd 身份验证和每个 IP 允许/拒绝规则。

Nginx Plus 有办法做到这一点,详细描述如下:Nginx 博客

相关内容