Mongoose House

          Technical Edition

          統(tǒng)計

          留言簿(4)

          積分與排名

          閱讀排行榜

          使用Apache的mod_authn_dbd和PostgreSQL實施HTTP Basic登錄認(rèn)證

          【STEP1】

          使用PostgreSQL的客戶端pgAdmin登錄數(shù)據(jù)庫,做成用戶認(rèn)證表。字段名和表名任意,如
          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】

          由于使用Apachemod_authn_dbd進(jìn)行用戶登錄認(rèn)證的時候,要求用戶密碼必須使用密文保存。這里我們使用Apachecommons-codec來加密密碼明文。
          1         String inpasswd = "test";
          2         String passwd = "{SHA}" + Base64.encodeBase64String(MessageDigest.getInstance("SHA1").digest(inpasswd.getBytes()));

           

          【STEP3】

          為了之后Apachemod_authn_dbd模塊可以找到數(shù)據(jù)庫的驅(qū)動,需要將PostgreSQL的驅(qū)動添加到LIBARAY_PATH中。由于操作系統(tǒng)是Redhat Enterprise Server 5,所以采用的方式是,在/etc/ld.so.conf.d目錄下建立apr-util-httpd-1.2.conf這個文件,其中添加數(shù)據(jù)庫驅(qū)動的路徑。

              不知道數(shù)據(jù)庫驅(qū)動的路徑的話,可以使用find命令查找。

          find / -name libpq.so

           

          【STEP4】

          下載Apache Http Server 2.2進(jìn)行編譯、安裝。可以在客戶端下載后,用sftp傳到服務(wù)器上,也可以使用wget命令從internet上獲取。
          tar zxvf httpd-2.2.17.tar.gz

           

          【STEP5】

          為了使用mod_authn_dbd模塊,首先必須安裝apr框架。另外,Apache2.2.x要求apr的版本為1.2,如果服務(wù)器上已經(jīng)存在apr 1.1的話,需要升級為1.2。在Apache2.2.xconfigure如果指定了如下參數(shù)好像可以直接安裝apr,但這次我們是分別安裝aprApache Http Server

          --enable-dbd --enable-authn-dbd --with-pgsql=/usr/local/pgsql

           

          【STEP6】

          進(jìn)入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/pgsqlPostgreSQL數(shù)據(jù)庫安裝的HOME目錄。如果不在這個目錄下面的話,可以使用find / -name pgsql來查找名為“pgsql”的目錄。可能找到若干個,PostgreSQL數(shù)據(jù)庫安裝的HOME目錄的特征是下面包含data/basedata/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的轉(zhuǎn)發(fā),所以加入proxy功能
           8 "--enable-vhost-alias" \
           9 "--enable-dbd"         <-- 認(rèn)證功能必須
          10 "--enable-authn-dbd"   <-- 認(rèn)證功能必須
          11 make
          12 make install

           

          ※可以使用./configure --help來查看支持的參數(shù)。 

           

          【STEP9】

          下面就可以啟動WEB服務(wù)器,看服務(wù)器是否可以正常運行。

           

          1 cd /usr/local/apache22/bin
          2 ./apachectl start
          3 ps –ef | grep httpd     <-- 查看服務(wù)是否啟動
          使用瀏覽器訪問地址,如果出現(xiàn)“It Works!”表明已經(jīng)安裝好。

           

          【STEP10】

          停止服務(wù)器,修改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 

           

          【STEP11】

          再次啟動服務(wù)器,訪問WEB服務(wù)器后,就會彈出要求登錄的對話框,輸入數(shù)據(jù)庫中保存的用戶名和密碼后,應(yīng)該可以正常登錄了。

          【STEP12】

          之后為了連接Tomcat,在http.conf中加入
          ProxyPass / ajp://localhost:8009/

          此時,所有對Apache Http Server的請求都會轉(zhuǎn)發(fā)給Tomcat,而Apache Http Server就作為一個前端認(rèn)證的服務(wù)器使用。另外,在TomcatJSP中,使用request.getRemoteUser還可以取到登錄的用戶名。

          posted on 2011-03-26 20:33 Mongoose 閱讀(2202) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 房产| 佳木斯市| 临颍县| 阿勒泰市| 微博| 定边县| 闸北区| 保山市| 盘山县| 黄浦区| 通河县| 吉首市| 贵港市| 云梦县| 平邑县| 崇州市| 孟州市| 长乐市| 宁安市| 屯门区| 江津市| 宿松县| 哈密市| 昭通市| 东至县| 皮山县| 黄梅县| 南充市| 凤山县| 呼伦贝尔市| 岳阳市| 平泉县| 利津县| 康保县| 田林县| 仲巴县| 霸州市| 公安县| 镇康县| 拉孜县| 清涧县|