`

使用Apache的mod_authn_dbd和PostgreSQL实施HTTP Basic登录认证

 
阅读更多

【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】

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

 

【STEP3】

为了之后Apachemod_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.xconfigure如果指定了如下参数好像可以直接安装apr,但这次我们是分别安装aprApache 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/pgsqlPostgreSQL数据库安装的HOME目录。如果不在这个目录下面的话,可以使用find / -name pgsql来查找名为“pgsql”的目录。可能找到若干个,PostgreSQL数据库安装的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的转发,所以加入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 

 

【STEP11】

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

【STEP12】

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

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

相关推荐

    apache模块mod_concatx 提高js/css加载速度

    Apache模块mod_concatx是针对网页优化的一个利器,它专门设计用于提高JavaScript和CSS文件的加载速度。这个模块通过合并多个JS和CSS文件为一个请求,减少了HTTP请求的数量,从而显著提升了网页的加载效率,这对于...

    tomcat_apache共享动态连接库

    LoadModule authn_dbd_module modules/mod_authn_dbd.so LoadModule authn_default_module modules/mod_authn_default.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_groupfile_...

    mod_authn_ntlm-1.0.8-x86-vs16.zip.sha

    mod_authn_ntlm-1.0.8-x86-vs16.zip.sha

    Apache HTTP Server Version 2.2 文档(2013.4.10最新)

    mod_authn_dbd mod_authn_dbm mod_authn_default mod_authn_file mod_authz_dbm mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_owner mod_authz_user mod_auth_basic mod_auth_digest mod_...

    Apache_HTTP_Server_2.4.12_JiSuXia.rar

    【Apache HTTP Server 2.4.12 ...不过,需要注意的是,描述中的“运行未注册软件”和“注册机”等内容涉及非法活动,不应在合法的软件使用和开发过程中采用。正确的方式应该是购买和使用正版软件,遵循软件授权条款。

    mod_auth_mysql.rar

    `mod_auth_mysql` 是一个Apache HTTP服务器的模块,它允许服务器使用MySQL数据库进行用户认证和授权。这个模块在Web服务器安全管理和用户权限控制方面扮演着重要角色,特别适合那些需要集中管理用户账户和访问权限的...

    mod_auth_trustheader:apache-2.x 模块从头|环境|SSL变量获取用户ID-开源

    主要从 apache-2.2 的 mod_auth_basic 复制而来。 basic-auth 握手被一些代码取代,这些代码从可定制的变量中获取用户 ID。 该变量可以是 ap_expr 可以在身份验证挂钩中读取的任何内容,例如:标头字段、httpd 环境...

    mod_authn_dovecot:针对Dovecot身份验证守护程序的Apache身份验证

    适用于Apache的Dovecot身份验证模块 因为dovecot可以具有许多不同的身份验证后端,并且通过dovecot-auth客户端套接字(可以在下面找到示例配置)将自己暴露为身份验证源。 通过此模块,您可以使用基本身份验证来针对...

    Apache的SSL的配置和应用

    LoadModule authn_default_module modules/mod_authn_default.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule authz_default_...

    web_authn:Ruby中的W3C Web身份验证API(又名WebAuthN FIDO 2.0)RP库

    网络认证 Ruby中的W3C Web身份验证API(又名WebAuthN / FIDO 2.0)RP库 安装 将此行添加到您的应用程序的Gemfile中: gem 'web_authn' 然后执行: $ bundle 或将其自己安装为: $ gem install web_authn 用法 ...

    apache_2.2.8-win32-x86-openssl-0.9.8g.zip

    7. **权限和用户认证**:Apache支持多种身份验证方法,如基本认证、Digest认证等,通过`mod_authn`和`mod_authz`系列模块实现。正确配置用户权限对于保护服务器资源至关重要。 8. **性能调优**:Apache的性能可以...

    Apache HTTP服务器2.0中文说明

    13. **安全性认证**:Apache 2.0支持多种身份验证机制,如Basic、Digest、NTLM等,可以通过mod_authn系列模块进行配置,确保只有授权用户可以访问受保护的资源。 14. **SSL/TLS加密**:Apache 2.0通过mod_ssl模块...

    Apache2.2手册

    手册中介绍了使用mod_auth_basic、mod_auth_digest等模块来实现基本认证和摘要认证,以及如何使用mod_authn_alias模块来定义认证别名,这些内容对理解Web服务安全配置至关重要。 在配置方面,Apache 2.2手册详细...

    开源FTP服务端工具proftpd源码

    源码中的`mod_authn_*`模块负责处理不同类型的认证,例如`mod_authn_dbd.c`实现了数据库驱动的认证。 4. **传输与数据安全** ProFTPD支持FTPS(FTP over TLS/SSL)和SFTP,确保数据在传输过程中的安全性。源码中的...

    CoInitializeSecurity

    - **dwAuthnLevel**: 认证级别,常见的值有 `RPC_C_AUTHN_LEVEL_NONE`, `RPC_C_AUTHN_LEVEL_CONNECT`, `RPC_C_AUTHN_LEVEL_CALL`, `RPC_C_AUTHN_LEVEL_PKT`, `RPC_C_AUTHN_LEVEL_PKT_INTEGRITY`, `RPC_C_AUTHN_LEVEL...

    Redmine-mod-perl-auth:mod_perl模块的增强版本,用于为Apache提供Redmine身份验证和授权(主要用于Subversion HTTP访问)

    Apache :: Authn :: Redmine ... 对不起,ruby用户,但是您需要一些perl模块,至少需要mod_perl2,DBI和DBD :: mysql(或者您数据库的DBD驱动程序,因为它应该在所有所有数据库上都可以工作)。 在debian /

    web_authn_playground

    10. **代码示例和文档**:WebAuthn Playground可能包含详细的代码注释和教程,解释如何使用WebAuthn API和Rust库,帮助开发者理解和实践WebAuthn技术。 通过研究和实践WebAuthn Playground,开发者不仅可以深入理解...

    mod_auth_mysql-开源

    LoadModule authn_mysql_module modules/mod_auth_mysql.so AuthType Basic AuthName "Protected Area" AuthMySQLDB "auth_db" AuthMySQLUser "auth_user" AuthMySQLPassword "auth_password" ...

    网络技术实验APACHE架设WEB服务器.pdf

    例如,`mod_auth_digest`提供了摘要式认证,`mod_auth_basic`提供了基础认证,而`mod_authn_dbm`提供了基于DBM文件的认证方式。在配置文件中可以启用或禁用这些模块,以满足不同的安全和功能需求。 6. Apache服务器...

    让svn可以在服务端修改密码的软件和文档

    Apache可以使用mod_authnz_svn模块与svn交互,通常与mod_authn_dbm或mod_authn_file一起使用来管理用户身份。用户密码存储在`.htpasswd`文件中,可以使用`htpasswd`命令行工具来添加、删除或修改用户密码。 3. **...

Global site tag (gtag.js) - Google Analytics