首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复对Tomcat中已拒绝的请求资源的访问?

如何修复对Tomcat中已拒绝的请求资源的访问?
EN

Stack Overflow用户
提问于 2010-03-25 06:09:02
回答 4查看 46.2K关注 0票数 6

我希望通过使用数据库作为领域来启用基于表单的身份验证,但是每当我试图在Tomcat 6中作为Tomcat管理器进行身份验证时,我都会收到该消息。我已经创建了一个表user_name和user_roles,并将用户名(蓝色)映射到user_roles表中的user_roles表中的角色,但我仍然无法进行身份验证。我已经在server.xml文件中重新创建了王国标记:

代码语言:javascript
复制
 <Realm className      = "org.apache.catalina.realm.JDBCRealm"
        debug          = "99" 
        driverName     = "com.mysql.jdbc.Driver"
        connectionURL  = "jdbc:mysql://localhost:3306/mail" 
        connectionName = "root" 
        userTable      = "users"
        userNameCol    = "user_name"
        userCredCol    = "user_pass"
        userRoleTable  = "user_roles" 
        roleNameCol    = "role_name" 
 /> 

有人能告诉我我在做什么,以及我如何使用数据库启用基于表单的身份验证吗?

  1. 我已经将用户“蓝色”声明为管理员和管理员,当我试图登录tomcat管理器页面时,它给了我一个消息: HTTP Status 403 -拒绝访问所请求的资源
  2. 当我输入错误的用户名或密码时,tomcat再次询问用户名和密码,而不是显示消息。
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-25 09:59:54

我自己也没试过。您能否尝试更改TOMCAT_HOME_DIR\webapps\manager\WEB-INF\web.xml中的auth方法以将auth方法设置为FORM。王国的名字并不重要。

代码语言:javascript
复制
<login-config>   <auth-method>FORM</auth-method>   <realm-name>Tomcat Manager Application</realm-name> </login-config>

另外,确认一下--您必须在server.xml中只保留一个领域,注释掉默认的领域。

票数 3
EN

Stack Overflow用户

发布于 2015-04-09 22:37:45

HTTP Status 403 (对请求的资源的访问已被拒绝)可能表示您输入了太多不正确的凭据,或者您的配置出现了一些问题。

一个可能的问题是,您的浏览器可以缓存您的身份验证凭据,因为使用BASIC auth,您的浏览器只在第一次对站点进行身份验证时才会提示您提供凭据。在成功的身份验证之后,它不会再次提示您,并迫使您的浏览器再次提示您,有时您需要完全关闭浏览器(或尝试使用另一个web浏览器)。

如果您没有更改任何配置文件,请检查安装中的文件conf/tomcat-users.xml (locate tomcat-users.xml)。该文件必须包含允许您使用Tomcat的凭据。

例如,要向名为tomcat的名为s3cret的用户添加manager-gui角色,请将以下内容添加到上面列出的配置文件中:

代码语言:javascript
复制
<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>

然后,您可以从/manager/html访问webapps管理器(例如,在配置更改后重新加载)。

阅读更多:经理应用程序如何-TO

如果您试图实现自己的安全约束(在web.xml中),请尝试以下示例(在</web-app>结束之前添加它):

代码语言:javascript
复制
<!-- 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元素,它指定我们使用的身份验证方法,即BASICsecurity-constraint元素包含3个元素:web-resource-collectionauth-constraintuser-data-constraint。web资源集合指定应用程序中需要身份验证的部分。/*表示整个应用程序都需要身份验证。auth约束指定用户访问受保护资源所需的角色。用户数据约束的传输保证可以是NONECONFIDENTIALINTEGRAL。我们将其设置为NONE,这意味着当您试图访问受保护的资源时,不需要重定向到SSL

还请确保您有行:

代码语言:javascript
复制
<Realm className="org.apache.catalina.realm.MemoryRealm" />

在您的conf/server.xml (Engine部分)中。

如果你仍然有这个问题,试着:

  • 检查是否正在编辑正确的XML文件,
  • 验证您的XML文件,例如catalina.sh configtestxmlstarlet val /etc/tomcat?/*.xml /var/lib/tomcat7/webapps/*/WEB-INF/*.xml
  • 您的<url-pattern><security-constraint>中匹配或设置为/*
  • 检查您的Tomcat日志(例如/var/log/tomcat7),
  • 提高测井水平 (INFO -> FINE/FINEST),在logging.propertieslog4j.properties中(信息、严重、警告、信息、配置、精细、精细、最好或全部),重新启动Tomat并检查日志,
  • 如果日志中没有任何内容,请检查是否正在检查正确的日志(sudo lsof | grep -E "java.*(out|txt|log)$"tail -f /var/log/tomcat7/*.log /var/log/tomcat7/*.txt /var/log/tomcat7/*.out),
  • 在使用log4j日志记录系统时,请确保将libs和log4j.properties放在正确的文件夹中并进行配置,以确保正确初始化
  • 使用cURL测试基本身份验证:
代码语言:javascript
复制
- without credentials:

$ 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.113FORCARD。

  • 可能已经为太多失败的身份验证尝试 (LockOutRealm)激活了用户锁定机制,
  • 停止并手动运行Tomcat (以与ps wuax | grep ^tomcat相同的方式),例如:ps wuax \ grep ^tomcat tomcat7 884 /usr/lib/jvm/java-7-OpenJDK-AMD 64/bin/java tomcat7.org.apache.catalina.startup.Bootstrap start $ /etc/init.d/tomcat7 7停止$ sudo sudo -u tomcat7 /usr/lib/jvm/java-7-OpenJDK-AMD 64/bin/java. -Dorg.apache.catalina.level=FINEST org.apache.catalina.startup.Bootstrap startAlternatively开始使用catalina.sh脚本如下: $$。/etc/default/tomcat7 7$ export _HOME=/usr/lib/jvm/java-7-openjdk 64 CATALINA_HOME=/usr/share/tomcat7 7 CATALINA_BASE=/var/lib/tomcat7 CATALINA_PID=/var/ run /tomcat7.pid CATALINA_TMPDIR=/tmp LOGGING_CONFIG="-Dorg.apache.catalina.level=FINEST“$/usr/share/tomcat7 7/bin/catalina.sh 或者在调试模式中: $ JPDA_SUSPEND=y catalina.sh jpda启动 检查你的catalina.out日志。
  • 最后的办法是通过:sudo strace -fp PID调试进程。
票数 3
EN

Stack Overflow用户

发布于 2011-05-24 14:41:45

您需要定义另一个名为“tomcat”的用户角色,并使用户“蓝色”成为该组的成员。

您可以在web.xml文件中更改此约束所需的角色组名称:

代码语言:javascript
复制
<auth-constraint>
    <role-name>tomcat</role-name>
</auth-constraint>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2513415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档