Pergunta

Quero ativar a autenticação baseada em formulário usando o banco de dados como reino, mas estou sempre recebendo essa mensagem sempre que tento autenticar como gerenciador de tomcat no tomcat 6. Já criei um tabela user_name e user_roles e mapeei o nome de usuário (azul) para admin para e gerente como função na tabela user_roles no MySQL, mas ainda não consigo autenticar. Eu já recriei a etiqueta do Realm em server.xml Arquivo:

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

Alguém poderia me dizer o que está errado, e como habilitar autenticação baseada em formulário usando o banco de dados?

  1. Eu declarei o usuário "azul" como administrador e gerente, e quando estou tentando fazer login na página do TomCat Manager, está me dando a mensagem:

    Status HTTP 403 - O acesso ao recurso solicitado foi negado

  2. Quando digito nome de usuário ou senha errados, o TomCat novamente pede nome de usuário e senha em vez de mostrar essa mensagem.

Foi útil?

Solução

Eu não tentei isso sozinho. Você pode tentar alterar o método de autenticação no TOMCAT_HOME_DIR\webapps\manager\WEB-INF\web.xml para apontar o conjunto de auth-metod para formar. O nome do reino não importa.

<login-config>   <auth-method>FORM</auth-method>   <realm-name>Tomcat Manager Application</realm-name> </login-config>

Basta confirmar também - você terá que manter apenas um reino no servidor.xml, comentar o padrão.

Outras dicas

O status HTTP 403 (o acesso ao recurso solicitado foi negado) pode indicar que você digitou muitas credenciais incorretas ou tem algum problema com sua configuração.

Uma questão possível pode ser que seu navegador possa ter suas credenciais de autenticação em cache, porque com a autenticação básica, seu navegador só solicitará credenciais na primeira vez que você se autenticará para o seu site. Após uma autenticação bem -sucedida, ela não o solicitará novamente e forçar o seu navegador a solicitá -lo novamente, às vezes você precisa fechar completamente o navegador (ou tentar com outro navegador da web).

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 que você use o TomCat WebApp.

Por exemplo, para adicionar a função de gerente-gui a um usuário nomeado 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"/>

Então você pode acessar seu gerente de webapps de /manager/html (por exemplo, recarregar após alterações de configuração).

Consulte Mais informação: App gerente de instruções

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

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

O elemento login-config contém o auth-method elemento, que especifica o método de autenticação que usamos, que é BASIC. o security-constraint O elemento contém 3 elementos: web-resource-collection, auth-constraint, e user-data-constraint. A coleta da Web-Resource especifica as partes do nosso aplicativo que exigem autenticação. o /* indica que todo o aplicativo requer autenticação. A restrição de autenticação especifica a função que um usuário precisa ter para acessar os recursos protegidos. A tomada de transporte da consulta de dados de dados pode ser NONE, CONFIDENTIAL ou INTEGRAL. Nós definimos para NONE, o que significa que redirecionar para SSL não é necessário quando você tenta atingir o recurso protegido.

Também verifique se você está em linha:

<Realm className="org.apache.catalina.realm.MemoryRealm" />

dentro do seu conf/server.xml (Engine seção).

Se você ainda está tendo o problema, tente:

  • Verifique se você está editando o arquivo XML certo,
  • Valide seus arquivos XML, por exemplo catalina.sh configtest ou xmlstarlet val /etc/tomcat?/*.xml /var/lib/tomcat7/webapps/*/WEB-INF/*.xml,
  • sua <url-pattern> combina em seu <security-constraint> ou definido como /*,
  • Verifique seus logs do tomcat (por exemplo /var/log/tomcat7),
  • Aumentar o nível de log (INFO -> FINE/FINEST) dentro logging.properties ou log4j.properties (Informações, grave, aviso, informação, configuração, fino, mais refinador, melhor ou tudo), reinicie o tomat e verifique os logs,
  • Se nada em logs, verifique se você estiver verificando os logs certos (sudo lsof | grep -E "java.*(out|txt|log)$", tail -f /var/log/tomcat7/*.log /var/log/tomcat7/*.txt /var/log/tomcat7/*.out),
  • Ao usar log4j sistema de log, verifique se você inicializou corretamente Colocando Libs e log4j.properties na pasta certa e configurando -a,
  • Teste a autenticação básica com Curl:

    • sem credenciais:

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

      Normalmente o pedido deve retornar Http/1.1 401 não autorizado e a "Www-autenticate"O cabeçalho deve indicar Básico Autenticação é necessária.

    • com credenciais:

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

      A solicitação deve ser enviada com um cabeçalho de "autorização" e deve autenticar. Se suas credenciais forem inválidas, você deve obter: Http/1.1 401 não autorizado. Se o usuário for autenticado, mas não tiver acesso para visualizar o recurso que você deve obter: Http/1.1 403 proibido.

  • Talvez um mecanismo de bloqueio de usuário tenha sido ativado para Muitas tentativas de autenticação fracassadas (Lockoutrealm),

  • Pare e execute o tomcat manualmente (da mesma maneira 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 catalina.sh script 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 em modo de depuração:

    $ JPDA_SUSPEND=y catalina.sh jpda start
    

    e verifique o seu catalina.out registro.

  • O último recurso é o processo de depuração por: sudo strace -fp PID.

Você precisa definir outra função de usuário chamada 'tomcat' e fazer do usuário 'azul' um membro deste grupo.

Você pode alterar o nome do grupo de função necessário para essa restrição no arquivo web.xml:

<auth-constraint>
    <role-name>tomcat</role-name>
</auth-constraint>

Recebi o mesmo erro "Status HTTP 403 - o acesso ao recurso solicitado foi negado",, em vez da janela pop -up, quando usei a autenticação básica. Eu tinha usado minha função personalizada (MyName), mas não funcionou. Então, defino uma função para (gerenciador-gui) e atribuía o nome de usuário e a senha para ele. Depois de defini -lo, obtive o resultado necessário. Use o gerenciador-gui como uma função e tente novamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top