ntlm: Nginx ntlm-Modul, implementiert in Lua
Installation
Wenn Sie noch kein RPM-Repository-Abonnement eingerichtet haben, melden Sie sich an. Danach können Sie mit den folgenden Schritten fortfahren.
CentOS/RHEL 7 oder Amazon Linux 2
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-ntlm
CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-ntlm
Um diese Lua-Bibliothek mit NGINX zu verwenden, stellen Sie sicher, dass nginx-module-lua installiert ist.
Dieses Dokument beschreibt lua-resty-ntlm v0.2, veröffentlicht am 07. Februar 2018.
Windows-Authentifizierung wird immer innerhalb von Unternehmen verwendet. IIS kann Windows-Authentifizierung einfach aktivieren. Für Nginx-Benutzer sind einige Lösungen nicht benutzerfreundlich: Nginx Pro bietet ein ntlm-Modul, aber es ist nicht kostenlos; Reverse Proxy muss zuerst einen anderen Server einrichten.
Das Projekt ist inspiriert von express-ntlm und PyAuthenNTLM2. IIS wird für jede Verbindung ein Windows-Authentifizierungsszenario auslösen. Im Gegensatz zu IIS löst das Projekt ntlm nur für die erste Anfrage aus. Nach Abschluss der Authentifizierung wird der HTTP-Header Authorization:Bearer an den Browser gesendet, und der Browser sollte ihn in jedes Anfragepaket einfügen, um ntlm erneut zu vermeiden. Gleichzeitig werden die HTTP-Header: X-Ntlm-Username und X-Ntlm-Domain an den Upstream gesendet.
HINWEIS: Setzen Sie kein set-cookie während der ntlm-Authentifizierung. (#1175)
Verwendung
- Installieren Sie OpenResty, das Nginx und LuaJIT integriert.
- Installieren Sie LuaRocks, da
ntlm.luavon den Modulenstructundiconvabhängt. - Installieren Sie das
struct-Modul:sudo /usr/local/openresty/luajit/bin/luarocks install struct - Installieren Sie das
iconv-Modul:sudo /usr/local/openresty/luajit/bin/luarocks install lua-iconv - Speichern Sie
ntlm.luain/usr/local/openresty/site/lualib - Fügen Sie den folgenden Code in
/usr/local/openresty/nginx/conf/nginx.confein:lua_shared_dict ntlm_cache 10m; keepalive_timeout 35; ... ... access_by_lua_block { local cache = ngx.shared.ntlm_cache require('ntlm').negotiate("ldap://domain.net:389", cache, 10) -- cache ist ein gemeinsames DICT -- timeout ist kürzer als keepalive } - Starten Sie den Nginx-Dienst neu:
sudo service openresty restart
GitHub
Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-ntlm.