Como consertar o acesso ao recurso solicitado que foi negado para o webapp do Tomcat?

4

Eu instalei o Tomcat na minha máquina e ele está funcionando bem. Eu sou capaz de acessar o gerenciador de administração. Implementei um arquivo .war que pode ser visualizado no gerenciador do Tomcat. O nome do arquivo é shim (na verdade, estou instalando freeshim ).

Quando tento acessar o shim no navegador usando 192.168.1.65:8080/shim , obtenho uma interface de administração da web do shim . Esta é a mensagem que recebo:

This is the web administration interface for FreeSHIM. Web services are located "here".

Quando clico em "aqui" para configurar o Freeshim, recebo um erro:

HTTP Status 403 - Access to the requested resource has been denied.

Onde estou indo errado? Como posso alterar essa permissão?

    
por kenorb 11.09.2012 / 12:22

1 resposta

2

Status HTTP 403 (O acesso ao recurso solicitado foi negado) pode indicar que você digitou três ou mais credenciais incorretas (tente outro navegador da Web) ou tem algum problema com a configuração.

Se você não alterou nenhum arquivo de configuração, examine o arquivo conf/tomcat-users.xml em sua instalação ( locate tomcat-users.xml ). Esse arquivo deve conter as credenciais para permitir o uso da webapp do Tomcat.

Por exemplo, para adicionar a função manager-gui a um usuário chamado tomcat com uma senha de s3cret , adicione o seguinte ao arquivo de configuração listado acima:

<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>

Em seguida, você pode acessar seu gerenciador de aplicativos da web a partir de /manager/html (por exemplo, recarregar após as alterações na configuração).

Leia mais: HOW-TO do Gerenciador de aplicativos

Se você estiver tentando implementar sua própria restrição de segurança (em web.xml ), tente o seguinte exemplo (antes de </web-app> ending):

<!-- 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>

Se você ainda tiver o problema, tente:

  • verifique se você está editando o arquivo XML correto,
  • valide seus arquivos XML, por exemplo catalina.sh configtest ou xmlstarlet val /etc/tomcat?/*.xml /var/lib/tomcat7/webapps/*/WEB-INF/*.xml ,
  • seu <url-pattern> corresponde ao seu <security-constraint> ou definido como /* ,
  • verifique seus registros do Tomcat (por exemplo, /var/log/tomcat7 ),
  • aumente o nível de registro ( INFO - > FINE / FINEST ) em logging.properties ou log4j.properties (INFO, SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST ou ALL), reinicie o Tomat e verifique os logs,
  • se nada estiver nos registros, verifique se você está verificando os registros corretos ( sudo lsof | grep -E "java.*(out|txt|log)$" , tail -f /var/log/tomcat7/*.log /var/log/tomcat7/*.txt /var/log/tomcat7/*.out ),
  • ao usar o sistema de registro em log log4j , certifique-se de ter inicializado corretamente colocando libs e log4j.properties no pasta correta e configurando-a,
  • testa a autenticação BASIC com cURL:

    • sem credenciais:

      $ curl -vv http://example.com:8983/solr/
      

      Normalmente, a solicitação deve retornar HTTP / 1.1 401 Não Autorizado e o cabeçalho " WWW-Authenticate Básica é necessária.

    • com credenciais:

      $ curl -vv -u tomcat:tomcat http://example.com:8983/solr/
      

      A solicitação deve ser enviada com um cabeçalho "Autorização" e ela deve ser autenticada. Se as suas credenciais forem inválidas, você deve obter: HTTP / 1.1 401 Unauthorized . Se o usuário estiver autenticado, mas não tiver acesso para visualizar o recurso, você deverá obter: HTTP / 1.1 403 Proibido .

  • talvez um mecanismo de bloqueio de usuário tenha sido ativado para muitas tentativas de autenticação com falha (LockOutRealm ),

  • pare e execute o Tomcat manualmente (da mesma forma que em: ps wuax | grep ^tomcat ), por exemplo:

    # 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
    

    Como alternativa, comece a usar o script catalina.sh como:

    $ . /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
    

    Ou no modo de depuração :

    $ JPDA_SUSPEND=y catalina.sh jpda start
    

    e verifique seu catalina.out log.

  • O último recurso é depurar o processo por: sudo strace -fp PID .

por 10.04.2015 / 14:24