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

如何修复对Tomcat中被拒绝的请求资源的访问?,tomcat,authentication,configuration,http-status-code-403,catalina,Tomcat,Authentication,Configuration,Http Status Code 403,Catalina,我希望通过使用数据库作为域来启用基于表单的身份验证,但每当我尝试在Tomcat6中作为TomcatManager进行身份验证时,我总是会收到这条消息。我已经创建了一个表user_name和user_roles,并将用户名(蓝色)映射到mysql中user_roles表中的admin和manager,但我仍然无法进行身份验证。我已经在server.xml文件中重新创建了领域标记: <Realm className = "org.apache.catalina.realm

我希望通过使用数据库作为域来启用基于表单的身份验证,但每当我尝试在Tomcat6中作为TomcatManager进行身份验证时,我总是会收到这条消息。我已经创建了一个表user_name和user_roles,并将用户名(蓝色)映射到mysql中user_roles表中的admin和manager,但我仍然无法进行身份验证。我已经在
server.xml
文件中重新创建了领域标记:

 <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" 
 /> 

谁能告诉我我做错了什么,以及如何使用数据库启用基于表单的身份验证

  • 我已将用户“blue”声明为admin和manager,当我尝试登录tomcat manager页面时,它会给我以下消息:

    HTTP状态403-已拒绝访问请求的资源

  • 当我输入错误的用户名或密码时,tomcat再次要求输入用户名和密码,而不是显示该消息


  • 我自己也没试过。您是否可以尝试更改TOMCAT\u HOME\u DIR\webapps\manager\WEB-INF\WEB.xml中的身份验证方法,以将身份验证方法集指向表单。域名并不重要

    <login-config>   <auth-method>FORM</auth-method>   <realm-name>Tomcat Manager Application</realm-name> </login-config>
    
    表单Tomcat管理器应用程序
    

    还需确认-您只需在server.xml中保留一个域,注释掉默认域。

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

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

    <auth-constraint>
        <role-name>tomcat</role-name>
    </auth-constraint>
    
    
    雄猫
    
    当我使用基本身份验证时,我收到了相同的错误“HTTP状态403-拒绝访问请求的资源”,而不是弹出窗口。我使用了自定义角色(myname),但它不起作用。所以,我将角色设置为(manager gui),并为其分配用户名和密码。设置之后,我得到了所需的结果。将manager gui用作角色,然后重试。

    HTTP状态403(对请求的资源的访问已被拒绝)可能表示您键入的凭据太多或配置有问题

    一个可能的问题是您的浏览器可能缓存了您的身份验证凭据,因为使用基本身份验证,您的浏览器将仅在您第一次对站点进行身份验证时提示您输入凭据。成功身份验证后,它不会再次提示您,要强制浏览器再次提示您,有时您需要完全关闭浏览器(或尝试使用其他web浏览器)

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

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

    <role rolename="manager-gui"/>
    <user username="tomcat" password="s3cret" roles="manager-gui"/>
    
    login-config元素包含
    auth-method
    元素,该元素指定我们使用的身份验证方法,即
    BASIC
    安全约束
    元素包含3个元素:
    web资源集合
    身份验证约束
    用户数据约束
    。web资源集合指定应用程序中需要身份验证的部分。
    /*
    表示整个应用程序需要身份验证。auth约束指定用户访问受保护资源所需的角色。用户数据约束的传输保证可以是
    机密
    整体
    。我们将其设置为
    NONE
    ,这意味着当您尝试访问受保护的资源时,不需要重定向到
    SSL

    另外,请确保您已完成以下任务:

    <Realm className="org.apache.catalina.realm.MemoryRealm" />
    
    通常,请求应返回HTTP/1.1 401 Unauthorized,“WWW Authenticate”头应指示需要基本身份验证

  • 凭证件:

    $ curl -vv http://example.com:8983/solr/
    
    $ curl -vv -u tomcat:tomcat http://example.com:8983/solr/
    
    请求应与“授权”头一起发送,并应进行身份验证。如果您的凭据无效,您应该获得:HTTP/1.1 401 Unauthorized。如果用户已通过身份验证,但无权查看您应该获得的资源:HTTP/1.1 403禁止

  • 可能已为()激活了用户锁定机制

  • 手动停止并运行Tomcat(与中的方式相同:
    ps wuax | grep^Tomcat
    ),例如:

    或者开始使用
    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
    
    或在:

    并查看您的
    catalina.out
    日志

  • 最后一种方法是通过以下方式调试流程:
    sudo strace-fp PID


  • 1。当您尝试以管理员身份登录时会发生什么情况?2.当你故意输入错误的密码时会发生什么?它是否会给出相同的错误?1。我已经将用户“blue”声明为admin和manager,当我尝试登录tomcat manager页面时,它会给我一条消息:HTTP状态403-对请求的资源的访问被拒绝2。当我输入错误的用户名或密码时,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
    
    $ . /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
    
    $ JPDA_SUSPEND=y catalina.sh jpda start