您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

Linux+Apache实现用户身份认证

添加时间:2013-6-8 15:37:31  添加: 思海网络 
 一、序言

  现在很多网站对用户的访问权限进行了严格的限制,用户在访问某些资源时需要给出“用户名/口令"来确认自己的身份。

  目前,使用最多的身份认证方法是将用户名、口令存放在一个数据库中,当用户要访问某些受限制的资源时,要在某一个页面中输入用户名和口令,程序将用户输入的用户名和口令与数据库存放的“用户名/口令"相比较,如果输入正确,则正常使用资源,否则,资源访问被拒绝。但是,这种身份认证方式有两个很大的问题,一方面只要用户有一次身份认证成功,就可以记录下受限资源的链接地址,在下一次访问时只需输入该地址,而无需通过身份认证过程就可访问受限资源;另一方面用户可以在受限制的资源的超级链接处点右键,选择“属性",就可以查看到受限制资源的链接地址,直接访问该地址,使身份认证不能达到预期的效果。

  Apache可以很好地解决上述问题。Apache是建立WWW网站的软件,可运行于Linux、 Unix和Windows操作系统下。下面就以Linux为例介绍Apache是如何完成用户身份认证功能的。

  二、基本原理

  Apache实现身份认证的基本原理是:当系统管理员启动身份认证功能后,可以在要限制的目录中添加一个默认名“.htaccess"的文件。当用户访问该路径下的资源时,系统就会弹出一个对话框,要求用户输入“用户名/口令"。也就是说,它的身份认证功能不是人为由程序控制,而是由系统直接控制的。这样就避免了用户记录需要认证的资源的超级链接,不会下次直接访问资源。

  身份认证的方法有多种,其中包括Apache中预编译好的mod—auth模块和Apache自带的但未编译好的模块,如:mod—auth—dbm模块、mod—auth—db模块、mod—auth—msql模块。另外还有一些第三方开发的模块,如:MySQL数据库中使用的mod—auth—MySQL模块,他们都可以对一组用户或某个用户进行限制。

  三、具体实现

  下面主要介绍mod—auth模块和mod—auth—MySQL模块的使用。但无论采取何种认证方式,都要先对Apache做一些设置:在配置文件access.conf中作如下的设置:

  AccessFileName . htaccess

  AllOerride All

  (一) mod—auth模块完成身份认证功能,它主要是把允许访问资源的组名、用户名、用户口令以文本文件的方式存放,具体方法是:

  1.编辑认证用的组文件:主要用于存放可以访问受限制的资源的组名以及其中的用户,用Vi编辑组文件.htgroup如下

  ptisi : lkch

  存放在 /sur/local/apache/secrets/.htgroup路径下,其中ptisi是组名,lkch是组中的用户名。

  2.建立用户文件:主要用于存放某一组中的用户名和口令

  htpasswd -c /usr/local/apache/secrets/.htpasswd lkch

  注:htpasswd是Apache提供用于实现认证功能的程序,-c表示产生新的.htpasswd文件,如果存在同名旧文件,则覆盖旧文件。该程序将询问口令,键入“hello"然后重新确认口令。

  3.在要限制的资源的目录内编辑 .htaccess文件

  AuthName ″This is a test″

  AuthType Basic

  AuthUserFile /usr/local/apache/secrets/.htpasswd

  AuthGroupFile /usr/local/apache/secrets/.htgroup

  repuire group ptisi

  注:参数require group 指定哪些组的用户可以访问认证资源,这样,当再次访问需要认证的资源存在的目录时,系统就会弹出对话框,要求输入“用户名/口令"。

  (二)mod—auth—mysql模块完成身份认证功能,由于Apache + PHP + MySQL已经被许多网站的建设者当作是建设中小型网络数据库的黄金组合,因而mod—auth—mysql的功能也就显得尤其强大。它主要是把允许访问资源的组名、用户名、用户口令以文本文件的方式存放。

1.建立认证用的数据库

  prompt〉mysqladmin create http—auth

  2.建立认证用的表,并插入一行数据

  prompt〉mysql http—auth

  mysql〉create table mysql—auth (

  -〉sername char(25) NOT NULL,

  -〉passwd char(25),

  -〉groups char(25),

  -〉primary key (usrname)

  -〉);

  mysql〉insert mysql—auth (username,passwd,groups)

  -〉values (″lkch″,PASSWD(″hello″),″ptisi″);

  3.配置Apache

  在http.cont中加入 Auth—MySQL—Info [host] [username][Password]

  其中username和password是MySQL数据库用户的用户名和口令。

  4.创建 .htaccess文件

  AuthName ″This is a test!″

  AuthType Basic

  Auth—MySQL on

  Auth—MySQL—Db http—auth

  Auth—MySQL—Password—Table mysql—auth

  Auth—MySQL—Group—Table mysql—auth

  Auth—MySQL—Username—Field username

  Auth—MySQL—Password—Field passwd

  Auth—MySQL—Group—Field groups

  Auth—MySQL—Encryption—Types Plaintext,Crypt—DES,MySQL

  最后这句话表示认证时口令的形式,分别表示不加密、DES加密方式和MySQL的Password()加密。

  使用这种认证方法的最大优点是PHP提供了大量对MySQL数据库进行操作的函数,可以方便地进行远程理。

关键字:MySQL、数据库、Apache

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站