ntlm: Module ntlm Nginx implémenté par lua
Installation
Si vous n'avez pas configuré l'abonnement au dépôt RPM, inscrivez-vous. Ensuite, vous pouvez procéder avec les étapes suivantes.
CentOS/RHEL 7 ou 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
Pour utiliser cette bibliothèque Lua avec NGINX, assurez-vous que nginx-module-lua est installé.
Ce document décrit lua-resty-ntlm v0.2 publié le 7 février 2018.
L'authentification Windows est toujours utilisée au sein de l'entreprise. IIS peut activer facilement l'authentification Windows. Pour les utilisateurs de Nginx, certaines solutions ne sont pas conviviales : Nginx Pro fournit un module ntlm mais il n'est pas gratuit ; reverse proxy doit d'abord configurer un autre serveur.
Le projet est inspiré par express-ntlm et PyAuthenNTLM2. IIS déclenchera le scénario d'authentification Windows pour chaque connexion. Contrairement à IIS, le projet ne déclenche ntlm que pour la première requête. Une fois l'authentification effectuée, l'en-tête http Authorization:Bearer sera envoyé au navigateur, et le navigateur devra l'inclure dans chaque paquet de requête pour éviter ntlm à nouveau. En même temps, les en-têtes http : X-Ntlm-Username et X-Ntlm-Domain seront envoyés en amont.
NOTICE: ne pas set-cookie pendant l'authentification ntlm. (#1175)
Utilisation
- installez OpenResty qui intègre Nginx et LuaJIT
- installez LuaRocks car
ntlm.luadépend des modulesstruct,iconv - installez le module
struct:sudo /usr/local/openresty/luajit/bin/luarocks install struct - installez le module
iconv:sudo /usr/local/openresty/luajit/bin/luarocks install lua-iconv - enregistrez
ntlm.luadans/usr/local/openresty/site/lualib - ajoutez le code suivant à
/usr/local/openresty/nginx/conf/nginx.conf: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 est un DICT partagé -- le timeout est inférieur à keepalive } - redémarrez le service nginx :
sudo service openresty restart
GitHub
Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-ntlm.