ldap集成nginx
nginx版本:1.10.2
nginx安裝:
wget http://nginx.org/download/nginx-1.10.2.tar.gz
tar zxvf nginx-1.10.2.tar.gz
cd nginx-1.10.2
./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_ssl_module --with-http_sub_module --with-http_auth_request_module --with-http_stub_status_module
make
make install
已安裝nginx服務的話,通過 nginx -V 檢查是否支持編譯時是否添加 --with-http_auth_request_module,因為認證需要用到ngx_http_auth_request_module,如果不支持,需要重新編譯添加(參考:https://anyof.me/articles/236)。
?
nginx的ldap認證需要通過nginx官方提供的服務去實現,首先需要把代碼下載下來。
git clone https://github.com/nginxinc/nginx-ldap-auth
nginx-ldap-auth主要涉及的有兩個腳本:
backend-sample-app.py:提供登錄服務
nginx-ldap-auth-daemon.py:提供認證服務
腳本需要ldap模塊支持: yum install python-ldap -y
backend-sample-app.py的登錄界面會將密碼明文顯示,很不友好,將html內容替換成:
接下來把兩個腳本運行起來:
nohup python backend-sample-app.py > login.log 2>&1 &
nohup python nginx-ldap-auth-daemon.py --host 0.0.0.0 >auth.log 2>&1 &
腳本默認監聽localhost,根據需要自行修改。
nginx ldap認證 配置
在需要認證的server里加入以下:
location / {
#auth_basic "Welcome to solr";
#auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
auth_request /auth-proxy;
error_page 401 403 =200 /login;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#需要認證的服務
proxy_pass http://dev-solr:8983;
}
location /login {
#登錄服務
proxy_pass http://172.31.29.18:9000/login;
proxy_set_header X-Target $request_uri;
}
location = /auth-proxy {
internal;
#認證服務
proxy_pass http://172.31.29.18:8888;
proxy_cache_key "$http_authorization$cookie_nginxauth";
proxy_cache_valid 200 403 1m;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Ldap-URL "ldap://ldap.xxxx.net:389";
proxy_set_header X-Ldap-BaseDN "DC=ldap,DC=xxxx,DC=net";
#proxy_set_header X-Ldap-Template "(|(cn=xxxxx@xxxxx.com)(cn=xxxxx@xxxxxx.com))";
proxy_set_header X-Ldap-BindDN "cn=Manager,dc=ldap,dc=xxxxx,dc=net";
proxy_set_header X-Ldap-BindPass "xxxxxxx";
proxy_set_header X-CookieName "nginxauth";
proxy_set_header Cookie nginxauth=$cookie_nginxauth;
}
可以通過X-Ldap-Template配置ldap某個組的用戶訪問server:proxy_set_header X-Ldap-Template "(&(cn=%(username)s)(memberOf=cn=groupname,cn=Users,dc=ldap,dc=xxxxx,dc=com))";
但我這邊配置后發現ldap 不支持 memberOf,需要手動開啟。因為是一些內部服務,這邊采用一個折中的方法,設置白名單方式限制訪問。
缺陷:
不支持權限控制
管理賬號明文顯示,有風險(可以把賬號配置在nginx-ldap-auth-daemon.py腳本里)
參考鏈接:https://sapser.github.io/devops/2016/07/22/nginx-ldap
轉載于:https://www.cnblogs.com/imcati/p/9372094.html
總結
以上是生活随笔為你收集整理的ldap集成nginx的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASCII码、ISO8859-1、Uni
- 下一篇: thinkphp的使用——隐藏index