设为首页 收藏本站
查看: 998|回复: 0

[经验分享] 使用Apache的mod_authn_dbd和PostgreSQL实施HTTP Basic登录认证

[复制链接]

尚未签到

发表于 2016-11-21 06:24:42 | 显示全部楼层 |阅读模式
  【STEP1】
使用PostgreSQL的客户端pgAdmin登录数据库,做成用户认证表。字段名和表名任意,如
1 CREATE TABLE usrinfo
2 (
3   userid character varying NOT NULL,
4   passwd character varying NOT NULL,
5   CONSTRAINT usrinfo_pk PRIMARY KEY (userid)
6 )
7 

 【STEP2】
由于使用Apache的mod_authn_dbd进行用户登录认证的时候,要求用户密码必须使用密文保存。这里我们使用Apache的commons-codec来加密密码明文。
1         String inpasswd = "test";
2         String passwd = "{SHA}" + Base64.encodeBase64String(MessageDigest.getInstance("SHA1").digest(inpasswd.getBytes()));

   【STEP3】
  为了之后Apache的mod_authn_dbd模块可以找到数据库的驱动,需要将PostgreSQL的驱动添加到LIBARAY_PATH中。由于操作系统是Redhat Enterprise Server 5,所以采用的方式是,在/etc/ld.so.conf.d目录下建立apr-util-httpd-1.2.conf这个文件,其中添加数据库驱动的路径。
※    不知道数据库驱动的路径的话,可以使用find命令查找。

find / -name libpq.so

 【STEP4】
下载Apache Http Server 2.2进行编译、安装。可以在客户端下载后,用sftp传到服务器上,也可以使用wget命令从internet上获取。
tar zxvf httpd-2.2.17.tar.gz

   【STEP5】
  为了使用mod_authn_dbd模块,首先必须安装apr框架。另外,Apache2.2.x要求apr的版本为1.2,如果服务器上已经存在apr 1.1的话,需要升级为1.2。在Apache2.2.x的configure如果指定了如下参数好像可以直接安装apr,但这次我们是分别安装apr和Apache Http Server。
--enable-dbd --enable-authn-dbd --with-pgsql=/usr/local/pgsql

 【STEP6】
进入httpd-2.2.17/srclib/apr目录,安装apr框架。
1 ./configure --prefix=/usr/local/apr-httpd/
2 make
3 make install

   【STEP7】
  安装apr-util 1.2。
1 ./configure --prefix=/usr/local/apr-util-httpd/ --with-apr=/usr/local/apr-httpd/ --with-pgsql=/usr/local/pgsql
2 make
3 make install

一般地,/usr/local/pgsql是PostgreSQL数据库安装的HOME目录。如果不在这个目录下面的话,可以使用find / -name pgsql来查找名为“pgsql”的目录。可能找到若干个,PostgreSQL数据库安装的HOME目录的特征是下面包含data/base和data/global两个目录。

   【STEP8】
  安装Apache Http Server。
 1 "./configure" \
 2 "--prefix=/usr/local/apache22/" \
 3 "--with-apr=/usr/local/apr-httpd/" \
 4 "--with-apr-util=/usr/local/apr-util-httpd/" \
 5 "--enable-rewrite=shared" \
 6 "--enable-ssl" \
 7 "--enable-proxy" \     <-- 因为之后要做到Tomcat的转发,所以加入proxy功能
 8 "--enable-vhost-alias" \
 9 "--enable-dbd"         <-- 认证功能必须
10 "--enable-authn-dbd"   <-- 认证功能必须
11 make
12 make install
※可以使用./configure --help来查看支持的参数。 

   【STEP9】
  下面就可以启动WEB服务器,看服务器是否可以正常运行。
   
1 cd /usr/local/apache22/bin
2 ./apachectl start
3 ps –ef | grep httpd     <-- 查看服务是否启动
使用浏览器访问地址,如果出现“It Works!”表明已经安装好。

   【STEP10】
停止服务器,修改conf/http.conf文件。 
./apachectl stop

【httpd.conf】
 1 
 2 #Database Management
 3 #Use the PostgreSQL driver
 4 DBDriver pgsql
 5 
 6 #Connection string: database name and login credentials
 7 DBDParams "host=192.168.0.75 dbname=postgres user=test password=test"
 8 
 9 #Parameters for Connection Pool Management
10 DBDMin 1
11 DBDKeep 2
12 DBDMax 10
13 DBDExptime 60
14 
15 #Authentication Section
16 <Location "/">
17 
18 #mod_auth configuration for authn_dbd
19 AuthType Basic
20 AuthName "mongoose"
21 AuthBasicProvider dbd
22 
23 #authz configuration
24 Require valid-user
25 
26 #SQL query to verify a user
27 #(note: DBD drivers recognise both stdio-like %s and native syntax)
28 AuthDBDUserPWQuery "select passwd from userinfo where userid = %s"
29 
30 </Location>
31  DSC0000.gif

 【STEP11】
再次启动服务器,访问WEB服务器后,就会弹出要求登录的对话框,输入数据库中保存的用户名和密码后,应该可以正常登录了。

【STEP12】
之后为了连接Tomcat,在http.conf中加入
ProxyPass / ajp://localhost:8009/

此时,所有对Apache Http Server的请求都会转发给Tomcat,而Apache Http Server就作为一个前端认证的服务器使用。另外,在Tomcat的JSP中,使用request.getRemoteUser还可以取到登录的用户名。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-303062-1-1.html 上篇帖子: 卸载完PostgreSQL后,重新安装出现: The password specified was incorrect. Please enter the c 下篇帖子: 通过liquibase将PostgreSQL数据库导入到H2数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表