我正在运行一组 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 博客