- 具体步骤
- 1. 根据认证应用系统编写认证的URL请求
- 2. 采用PAM_SCRIPT 来整合这个URL认证
- 1) 下载并编译 PAM_SCRIPT 模块
- 2) 编译步骤
- 3) 按照文档建立相应的脚本
- 3. 在PAM机制里增加认证
- 4. 写一个test.sh 进行验证
- 5. 下载 Nginx 的 PAM 模块
- 6. 下载Nginx
- 7 . 整合测试
1. 所有的用户都采用公司邮箱和邮箱密码来登录系统,一旦用户删除后,删除邮箱后保证用户不能再登录到各个系统。
2. 基于 Linux PAM 机制
3. 所有的应用都在Nginx 后面,Nginx 负责与PAM系统的交互。
4. 各个系统的应用程序应该不关心用户认证,可以通过HTTP Header获得当前登录的用户。
具体步骤
1. 根据认证应用系统编写认证的URL请求
比如 http://xxxxx/login.jsp?user=xxxx&password=xxxx
认证成功返回 0,不成功返回 -1
2. 采用PAM_SCRIPT 来整合这个URL认证
注意:不要用 yum install pam_script
1) 下载并编译 PAM_SCRIPT 模块
下载地址:[https://github.com/jeroennijhof/pam_script](https://github.com/jeroennijhof/pam_script)
2) 编译步骤
aclocal
autoheader
libtoolize
automake -a
autoconf
./configure
make
将编译好的**pam_script.so** 复制到 lib 目录,我的是 ./lib/x86_64-linux-gnu/security/pam_script.so
3) 按照文档建立相应的脚本
pam_script_acct
pam_script_auth
pam_script_passwd
pam_script_ses_close
pam_script_ses_open
pam_script_auth 用于认证,与认证系统对接,脚本如下:
[plain] view plain copy
#!/bin/bash
URL="https://cas-server.360orz.com/cas-server/cplus/public/http-checkUser?name=$PAM_USER&password=$PAM_AUTHTOK&token=xxxx";
RET=curl -k $URL
#echo “———————–”
#echo $RET
if [ “$RET” = “0” ]; then
exit 0;
fi
exit 1;
[plain] view plain copy
3. 在PAM机制里增加认证
/etc/pam.d 下新建一个 neulion 的认证模块
内容如下:
[plain] view plain copy
- auth required pam_script.so dir=/usr/bin/neulion <<<<目录下就是pam_script 的几个脚本
- account required pam_permit.so
4. 写一个test.sh 进行验证
PAM_USER=neil.mao
PAM_AUTHTOK=xxxxxxx
/usr/bin/neulion/pam_script_auth
5. 下载 Nginx 的 PAM 模块
[http://web.iti.upv.es/~sto/nginx/](http://web.iti.upv.es/~sto/nginx/)
6. 下载Nginx
wget http://nginx.org/download/nginx-1.4.4.tar.gz
编译脚本类似:
./configure (这里是其他的配置xxxx)–add-module=/root/ngx_http_auth_pam_module-1.3
##
7 . 整合测试
nginx 的conf 加入
location / {
auth_pam "Please specify loginId"; <<<登录提示
auth_pam_service_name "neulion"; <<<< 认证模块,根据上面配置的
auth_pam_set_pam_env on;
proxy_pass http://10.7.1.70:80; <<<<<<<<< 后端的系统系统
client_max_body_size 1000m;
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_set_header Remote-User $remote_user; <<<<<<<< 登录的用户
}
然后浏览器访问: 输入用户名和密码,认证通过后,就可以访问应用了。