Apache是目前流行的Web伺服器,可運行在linux、Unix、Windows等作業系統下,它可以很好地解決“使用者名稱+密碼”的認證問題。Apache使用者認證所需要的使用者名稱和密碼有兩種不同的存貯方式:一種是文字檔;另一種是MSQL、 Oracle、MySQL等資料庫。下面以Linux的Apache為例,就這兩種存貯方式,同時能對Windows的 Apache使用者認證作簡要的說明。下面我們來介紹下通過文本認證而實現的方式。
建立使用者的認證授權需要三個步驟:
1、建立使用者庫
2、設定管理員的保護域
3、告訴伺服器哪些使用者擁有資源的存取權限
廢話不多少舉例最清楚拉!~假如某一目錄下的檔案如/home/ftp/pub需要做到使用者認證
建立認證使用者
@htpasswd –c /*/.password xuanfei |
建立認證組
@vi /*/.groupxuanfei-group:xuanfei xuanfei1 |
基本的Apache使用者認證方法:
在httpd.conf中加入下面的行
<>options indexes followsymlinksallowoverride authconfigorder allow,denyallow from all<> |
或者加到 /etc/httpd/conf.d/ 建立個檔案名稱為.conf結尾的設定檔
〈Directory /home/ftp/pub>Options IndexesAllowOverride AuthConfigorder allow,denyallow from all〈/Directory> |
用在目錄/home/ftp/pub下放檔案.htaccess,內容如下:
authname "shared files"authtype basicauthuserfile /*/.passwordrequire valid-user#require group xuanfei-group //接收組所以使用者#requirre user xuanfei //接收xuanfei單個使用者 |
用隨Apache來的程式htpasswd 組建檔案/etc/.passwd,每行一個使用者名稱:密碼
只要能提供正確的使用者名稱和密碼對,就允許登入訪問,這是針對任何地址來的
請求都要求提供使用者名稱和密碼認證。
針對部分網段或地址要求認證。
若公司LAN所在網段為10.45.63.0/24,且有一防火牆專線接入Internet,
內部網卡的地址為10.45.63.1/32,則現在希望所有通過撥本地633通過
防火牆上的apache反向 Proxy向LAN上的另一WWW伺服器訪問時需要認證,而本地
LAN上的使用者不需認證。可以在httpd.conf中放入:
〈Directory /home/ftp/pub>Options Indexes FollowSymLinksAllowOverride AuthConfigorder deny,allowdeny from 10.45.63.1〈/Directory> |
且在/home/ftp/pub/.htaccess中放入:
AuthName "shared files"AuthType BasicAuthUserFile /etc/.passwdrequire valid-usersatisfy any |
對同一目錄及其下的子目錄有不同的許可權,僅某些人可以存取一目錄下的子目錄。
如有一目錄/home/ftp/pub/host,有三個使用者user1,user2,user3都需要使用者名稱
和密碼進入/home/ftp/pub,但僅user1,user2能進入/home/ftp/pub/host.則
放下面的行到httpd.conf
〈Directory /home/ftp/pub>Options IndexesAllowOverride AuthConfigorder allow,denyallow from all〈/Directory>〈Directory /home/ftp/pub/host>Options IndexesAllowOverride AuthConfigorder allow,denyallow from all〈/Directory> |
且看/home/ftp/pub/.htaccess為:
AuthName "shared files"
AuthType Basic
AuthUserFile /etc/.passwd
require valid-user
且看/home/ftp/pub/host/.htaccess
AuthName "shared files"
AuthType Basic
AuthUserFile /etc/.passwd
AuthGroupFile /etc/.hostgroup
require group manager
且檔案/etc/.passwd內容為:
user1:passwd1
user2:passwd2
user3:passwd3
且檔案/etc/.hostgroup內容為:
manager: user1 user2