你在这里

用HTTP-Auth共享身份验证

原文链接:Secure Site的模块。Secure Site模块结合了站点其余部分的基本身份验证,使得drupal和其余部分的身份认证天衣无缝。由于您的用户已经用drupal进行了认证,浏览器将记住http的认证信息,所以您的用户在drupal登录后就不会再看见登录对话框。

要保护其他的drupal外的内容,您需要设置apache来用drupal的用户数据表来进行身份验证。用basic auth和mysql db table是可行的。在这里,我们需要使basic auth检查drupal的用户数据表格来覆盖整个站点。您需要用到apache的mod_auth_mysql模块。

Ubuntu服务器

注意:ubuntu的一些版本在这个包是有错误的,所以您想也许需要自己编译或用dpkg安装最新的.deb文件:https://launchpad.net/ubuntu/+source/mod-auth-mysql>

  • 首先安装mod_auth_mysql: sudo apt-get install libapache2-mod-auth-mysql
  • 激活mode_auth_mysql:
    cd /etc/apache2/mods-enabled
    sudo ln -s ../mods-available/auth_mysql.load
  • 根据下面的建立.htaccess文件:
    AuthName "site name"
    AuthType Basic

    Auth_MySQL On
    Auth_MySQL_Authoritative on

    Auth_MySQL_Host <db_host>
    Auth_MySQL_Username <db_user>
    Auth_MySQL_Password <db_password>
    Auth_MySQL_DB <db_name>
    Auth_MySQL_Password_Table users
    Auth_MySQL_Username_Field name
    Auth_MySQL_Password_Field pass
    Auth_MySQL_Encryption_Types PHP_MD5
    Auth_MySQL_Password_Clause " AND status=1"
    Auth_MySQL_Empty_Passwords Off

    AuthBasicAuthoritative Off
    AuthUserFile /dev/null

    require valid-user

其他环境

  • 首先用后面的命令下载mod_auth_sql(您也可以选择别的站点源): wget http://superb-east.dl.sourceforge.net/sourceforge/modauthmysql/mod_auth_mysql-3.0.0.tar.gz
  • 编译mod_auth_sql [root@server1 mod_auth_mysql-3.0.0]# /usr/sbin/apxs -c -L/usr/lib/mysql -I/usr/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c
  • 安装mod_auth_sql /usr/sbin/apxs -i mod_auth_mysql.la
  • 添加下面代码到.htaccess文件,使apache应用mod_auth_sql
    LoadModule mysql_auth_module modules/mod_auth_mysql.so
  • 设置身份验证。您可以在.htaccess文件里设置,但是,在它工作以后,我们最好在httpd.conf文件的site部分来设置它
    AuthName "SiteName"
    AuthType Basic
    AuthMySQLHost localhost
    AuthMySQLUser drupaluser
    AuthMySQLPassword *******
    AuthMySQLDB drupal
    AuthMySQLUserTable users
    AuthMySQLNameField name
    AuthMySQLPasswordField pass
    AuthMySQLPwEncryption md5
    AuthMySQLEnable On
    AuthMySQLUserCondition "status=1"
    require valid-user

    显然,我们需要用真实的数据来代替AuthMySQLUser, AuthMySQLPassword, AuthMySQLDB的部分。

    AuthMySQLUserCondition是设定好的,因为只要drupal的用户才能访问到被保护的区域。所以,如果您冻结了一个用户,他将不能够访问。这个设定在SQL语句中添加了一个where条件,所以您想提供基于角色的验证,也可以在此设置。

注意,drupal用md5来为密码编码。

这就是全部内容了。全站点的基本身份验证应该在您把设置文件添加到所有子文件夹后完全工作。注意,它将不会替换您本来已有的html登录界面,对话,以及其他的基本验证。但是它将保护您站点需要被保护的接口。进一步的整合工作需要进一步的工作。

注意这个过程并不提供对登录的加密,如果您需要加密,请设置SSL协议。