你的位置: Kiyo'Space首页 默认分类 阅读文章 欢迎留下您的足迹

nginx 引入LDAP登录验证

[ 默认分类 ] 分享

一.添加nginx-auth-ldap nginx模块

    编译nginx-auth-ldap模块需要ldap.h头文件,所以需要先安装ldap库

    yum -y install openldap-devel
1.下载模块包
    cd /etc/nginx/modules

    git clone https://github.com/kvspb/nginx-auth-ldap.git
2.0、原本用nginx编译安装的时候,把模块编译进去。
./configure --add-module=path_to_http_auth_ldap_module
make install
2.1、如果是yum安装的nginx看这里

2.1.a. 查看现有nginx版本与编译的参数

#nginx -V

nginx version: nginx/1.14.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'

2.1.b.下载同版本源码

# 官网下载nginx-1.12.2 并解压
$ cd ~
$ wget http://nginx.org/download/nginx-1.14.2.tar.gz
$ tar -zxvf nginx-1.14.2.tar.gz

2.1.c. 备份原有nginx和配置

# 暂时备份到用户目录下,以备操作错误时,进行还原
$ cp /usr/sbin/nginx ~/nginx.back
$ cp -r /etc/nginx ~/nginx.conf.back

2.1.d. 编译nginx,添加模块

# 安装编译的依赖包 -- 如果已经有编译依赖包,本步骤可跳过
yum install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel libxml2 libxml2-dev libxslt-devel gd-devel perl-devel perl-ExtUtils-Embed GeoIP GeoIP-devel GeoIP-data gperftools redhat-rpm-config
 
# 进入nginx,进行编译,编译时需要将上面查看到的现有nginx的参数都带上,然后在最后面添加你需要新增的模块
$ cd ~/nginx-1.14.2
 
# 因为这里我示例添加第三方模块nginx-auth-ldap,需要安装openldap-devel
$ yum install openldap-devel -y
 
# 其中最后的--add-module=为我这里示例的需要增加的第三方模块的存放路径,第三方模块需要提前下载好
# 不管是第三方模块,还是自身模块,都直接在最后添加参数即可。
$ ./configure *******(复制前面nginx -V configure arguments: 的内容) --add-module=/etc/nginx/modules/nginx-auth-ldap 
 
# 编译,注意:这里很多说不能make install,只make就好了,其实不然,
# 在执行./configure命令时则已经查出了原有nginx的各个文件的路径,如果原来没有nginx,则会默认安装到/usr/local/nginx目录下。
# 直接执行make install 则会自动替换原来的nginx,无须手动,也不会中断nginx进程。
$ make && make install

二.配置ldap认证

http {

        ldap_server openldap {

        url ldap://10.0.0.253:389/dc=example,dc=com?uid?sub?(&(objectClass=account));

        binddn "cn=Manager,dc=example,dc=com";

        binddn_passwd "secret";

        group_attribute memberuid;

        group_attribute_is_dn on;

        require valid_user;

      }

}

进入conf.d 对应主机 server 设置:

server {

       location /status {

            stub_status on;

            access_log off;

            auth_ldap "Restricted Space";

            auth_ldap_servers openldap;

        }

}
在nginx主配置文件的http标签中添加如下代码

group_attribute People 这个是验证的时候,访问哪个组

http {
    ldap_server test2 {
        url ldap://10.0.0.253:389/DC=ptmind,DC=com?cn?sub?(objectClass=person);
        binddn "cn=ldap,dc=ptmind,dc=com";
        binddn_passwd 'xxxxxxxxx';
        group_attribute People;
        group_attribute_is_dn on;
        require valid_user;
    }
}
然后再起一个可以访问的server进行验证
server {
    listen 80;
    server_name localhost;
    location / {
        root html;
        index index.html index.htm;
        auth_ldap "Forbidden";
        auth_ldap_servers test2;
    }
}

没有评论

  • (Required)
  • (Required, will not be published)