我正在測試Apache身份驗證從使用文件到使用dbd和mysql的遷移。我在CentOS 7服務器上使用apache 2.4.6。目前我希望保持文件和dbd身份驗證的正常工作,直到我很高興它正常工作。 這裏是我的配置的相關位:使用'AuthDigestProvider文件dbd'命令的Apache身份驗證似乎是錯誤的
LogLevel debug
#
ScriptAlias /cgi-bin/ "/var/www/dummy/cgi-bin/"
# mod_dbd configuration
DBDriver mysql
DBDParams "dbname=myDb user=somebody pass=somepassword"
DBDMin 4
DBDKeep 8
DBDMax 20
DBDExptime 300
<Directory "/var/www/dummy/html">
Options Includes FollowSymLinks
# Only needed if we use .htaccess for authentication
AllowOverride None
AuthType Digest
AuthName "Realm"
AuthDigestDomain /var/www/dummy/
# nb use dbd first and if that fails use file
# Well this keeps on failing 1-Sep-2014
# AuthDigestProvider dbd file
# Whereas this succeeds (huh??) with
# the error.log indicating (at LogLevel debug)
# it is due to dbd-group being granted
AuthDigestProvider file dbd
# These are specific to dbd
AuthDBDUserPWQuery "select pass from blah where UserName=%s"
AuthDBDUserRealmQuery "select Realm from blah where UserName=%s)"
# The first column value of each row returned by the query statement
# should be a string containing a group name.
# Zero, one, or more rows may be returned.
AuthzDBDQuery "select GroupName from blah where UserName=%s"
# These are specific to file
AuthUserFile /somewhere/passwd
AuthGroupFile /somewhere/group
# We require either dbd-group or failing that file group
<RequireAny>
Require dbd-group mygroup
Require group mygroup
</RequireAny>
</Directory>
根據Apache文檔(http://httpd.apache.org/docs/2.4/howto/auth.html):
AuthBasicProvider file ldap
Require valid-user
在這個例子中,文件提供商將首先嚐試驗證用戶。如果不能對用戶進行認證,LDAP提供將被調用。」因爲有暗示或連續之間需要聲明,但我已經包含了它,使其明確
的RequireAny指令是沒有必要的。
現在,如果我做的AuthDigestProvider指令指令「AuthDigestProvider指令DBD文件」命令這兩個失敗需要DBD組和要求組但是,如果我做的指令「AuthDigestProvider指令文件DBD」它成功和日誌文件表明:
[authz_core:debug] [pid 22474] mod_authz_core.c(802):[client ...] AH01626:Require dbd-group mygroup的授權結果:g咆哮。
我的問題是:這是否表明apache已授予使用dbd的訪問權限,還是真的授予了使用文件的訪問權限,並假裝它使用了dbd?
後續問題是:如果這個文件的dbd命令成功,爲什麼它會以'dbd文件'的順序失敗 - 當然,如果成功,它應該成功,不管使用什麼命令?
NB請不要回應有關摘要與基本認證的選擇,這只是一個測試。
_「這是否表明apache已經使用dbd授予了訪問權限,或者是否真的授予了使用文件的訪問權限,並且假裝它使用了dbd?」_ - 您不應該能夠通過使用兩個不同的用戶,一個在文件中,另一個在dbd中,並且每個用戶都進行一次身份驗證,然後查看日誌說的是什麼? – CBroe 2014-09-01 07:01:21
感謝您的建議CBroe。我在數據庫中添加了一個不在文件中的用戶,並且驗證失敗。我確實在'https://wiki.apache.org/httpd/FAQ#How_do_I_set_up_Apache_to_require_a_username_and_password_to_access_certain_documents.3F'中讀過一些關於默認情況下不認證的模塊。建議是「只需在配置中添加適當的'XXXAuthoritative yes'行,但我不確定這適用於2.4,我還沒有找到合適的指令...... – VaughanR 2014-09-02 02:08:28