HTTP狀態403(訪問請求的資源已被拒絕),可以表明要麼你鍵入了太多不正確的憑據或您一些問題,您的配置。
一個可能的問題可能是您的瀏覽器可能您的身份驗證憑據緩存,因爲基本身份驗證,您的瀏覽器將只提示您輸入憑據你第一次驗證您的網站。成功認證後,就不會再提示你,強迫你的瀏覽器再次提示你,有時你需要完全關閉了瀏覽器(或與其他網絡瀏覽器試試)。
如果您尚未更改任何配置文件,請檢查安裝文件conf/tomcat-users.xml
(locate tomcat-users.xml
)。該文件必須包含允許您使用Tomcat webapp的憑證。
例如,添加經理桂角色名爲tomcat
與s3cret
密碼的用戶,添加以下到上面列出的配置文件:
<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
然後你可以從訪問您的webapps經理/manager/html
(例如配置更改後重新加載)。
瞭解更多:Manager App HOW-TO
如果你想實現自己的安全約束(在web.xml
),試試下面的例子(</web-app>
前加入結尾):
<!-- This security constraint protects your webapp interface. -->
<login-config>
<!-- Define the Login Configuration -->
<auth-method>BASIC</auth-method>
<realm-name>Webapp</realm-name>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Admin</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
<!-- Specifying a Secure Connection -->
<user-data-constraint>
<!-- transport-guarantee can be CONFIDENTIAL (forced SSL), INTEGRAL, or NONE -->
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- Authorization, see: tomcat-users.xml -->
<security-role>
<role-name>*</role-name>
</security-role>
的login-config元素包含auth-method
元素,它指定我們使用的驗證方法,即BASIC
。 security-constraint
元素包含3個元素:web-resource-collection
,auth-constraint
和user-data-constraint
。 web-resource-collection指定了我們應用程序中需要驗證的部分。 /*
表示整個應用程序需要驗證。 auth-constraint指定用戶訪問受保護資源所需的角色。用戶數據約束的傳輸保證可以是NONE
,CONFIDENTIAL
或INTEGRAL
。我們將其設置爲NONE
,這意味着當您嘗試訪問受保護的資源時,不需要重定向到SSL
。
另外,還要確保你已經行:
<Realm className="org.apache.catalina.realm.MemoryRealm" />
您conf/server.xml
(Engine
部分)內。
如果您仍然有問題,請嘗試:
- 檢查,如果您正在編輯正確的XML文件,
- 驗證XML文件,例如
catalina.sh configtest
或xmlstarlet val /etc/tomcat?/*.xml /var/lib/tomcat7/webapps/*/WEB-INF/*.xml
,
- 在
<security-constraint>
您<url-pattern>
火柴或設置爲/*
,
- 檢查你的Tomcat日誌(例如
/var/log/tomcat7
),
- (
INFO
- >FINE
/FINEST
)在logging.properties
或log4j.properties
(INFO,重度,警告,INFO,CONFIG,FINE,FINER,FINEST或ALL),重新啓動托馬特和檢查日誌,
- 如果沒有在日誌中,請檢查您是否正在使用
log4j
記錄系統時,勾選右側日誌(sudo lsof | grep -E "java.*(out|txt|log)$"
,tail -f /var/log/tomcat7/*.log /var/log/tomcat7/*.txt /var/log/tomcat7/*.out
)
- ,通過放置庫和
log4j.properties
到正確的文件夾,並配置它確保您initialized it properly,
測試與捲曲BASIC驗證:
無憑證:
$ curl -vv http://example.com:8983/solr/
通常請求應該返回HTTP/1.1 401未授權和 「WWW驗證」 報頭應指示基本認證是必需的。
與憑證:
$ curl -vv -u tomcat:tomcat http://example.com:8983/solr/
該請求應與「授權」報頭被髮送,它應該進行認證。如果您的憑據無效,您應該得到:HTTP/1.1 401未授權。如果用戶已通過身份驗證,但無權查看資源,則應獲得:HTTP/1.1 403禁止登錄。
也許用戶鎖定機構已被激活爲too many failed authentication attempts(LockOutRealm)
停止和手動運行的Tomcat(以同樣的方式如下所示:ps wuax | grep ^tomcat
),例如:
# ps wuax | grep ^tomcat
tomcat7 884 /usr/lib/jvm/java-7-openjdk-amd64/bin/java -Djava.util.logging.config.file=/var/lib/tomcat7/conf/logging.properties ... org.apache.catalina.startup.Bootstrap start
$ /etc/init.d/tomcat7 stop
$ sudo sudo -u tomcat7 /usr/lib/jvm/java-7-openjdk-amd64/bin/java ... -Dorg.apache.catalina.level=FINEST org.apache.catalina.startup.Bootstrap start
或者開始使用catalina.sh
腳本,例如:
$ . /etc/default/tomcat7
$ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 CATALINA_HOME=/usr/share/tomcat7 CATALINA_BASE=/var/lib/tomcat7 CATALINA_PID=/var/run/tomcat7.pid CATALINA_TMPDIR=/tmp LOGGING_CONFIG="-Dorg.apache.catalina.level=FINEST"
$ /usr/share/tomcat7/bin/catalina.sh run
或者在debug mode:
$ JPDA_SUSPEND=y catalina.sh jpda start
,並檢查您catalina.out
日誌。
不得已是調試過程:sudo strace -fp PID
。
1.當您嘗試以管理員身份登錄,會發生什麼? 2.當你故意給出錯誤的密碼時會發生什麼 - 它是否會給出相同的錯誤? – JoseK 2010-03-25 09:07:25
1.我已經聲明瞭用戶「藍」既是管理員和經理,當我試圖在Tomcat管理頁面登錄,這是給我的留言:HTTP狀態403 - 訪問請求的資源已被拒絕 2.當我輸入錯誤的用戶名或密碼,Tomcat的再次詢問用戶名和密碼,而不是顯示該消息。 – Stardust 2010-03-25 09:19:06