日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ldap集成nginx

發布時間:2024/8/26 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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內容替換成:

html=""" <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf8"/> <title>登陸框</title> </head> <style> *{margin:0;padding:0;} .login{ width:334px; height:220px; margin:0 auto; position:absolute; left:40%; top:40%; } .login_title{ color: #000000; font: bold 14px/37px Arial,Helvetica,sans-serif; height: 37px; padding-left: 35px; text-align: left; }.login_cont {background: none repeat scroll 0 0 #FFFFFF;border: 1px solid #B8B7B7;height: 152px;padding-top: 30px; } .form_table {float: left;margin-top: 10px;table-layout: fixed;width: 100%; } .form_table th {color: #333333;font-weight: bold;padding: 5px 8px 5px 0;text-align: right;white-space: nowrap; } .form_table td {color: #717171;line-height: 200%;padding: 6px 0 5px 10px;text-align: left; } .login_cont input.submit {background-position: 0 -37px;height: 29px;margin: 10px 14px 0 0;width: 82px; } </style> <body><div class="login"><div class="login_cont"><form action='/login' method='post'><table class="form_table"><col width="90px" /><col /><tr><th>用戶名:</th><td><input class="normal" type="text" name="username" alt="請填寫用戶名" /></td></tr><tr><th>密碼:</th><td><input class="normal" type="password" name="password" alt="請填寫密碼" /></td></tr><tr><th></th><td><input class="submit" type="submit" value="登錄" /><input class="submit" type="reset" value="取消" /></td></tr></table><input type="hidden" name="target" value="TARGET"></form></div></div> </body> </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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。