Pergunta

Eu já criou um arquivo de banco de dados do usuário usando o comando htpasswd do Apache. Este arquivo é usado agora por vários outros aplicativos como o Apache e subversão.

Os usuários em são criados assim:

htpasswd /path/to/users.htpasswd peter

Este arquivo de usuário é global, não por diretório.

Como posso fazer Tomcat 6 uso este mesmo arquivo como uma região de segurança?

Foi útil?

Solução

Existem duas opções:

  1. Use o Apache como um front-end para o tomcat (usando mod_jk ou mod_proxy_ajp) eo Apache fazer a autenticação. Você pode encontrar detalhes sobre como fazê-lo aqui

  2. Se quiser que o tomcat para fazer a autenticação, então você precisa usar algo ot mais do que o arquivo htpasswd. Há 4 maneiras de economizar credenciais dos usuários - usando banco de dados, JNDI / LDAP, um arquivo XML ou um provedor de JAAS. Você pode ler sobre todas as opções no Realm Configuração HOW-TO .

Outras dicas

A maioria semelhante ao htpasswd pode ser a MemoryRealm . Eu tive problemas de mim para encontrar um exemplo simples como usá-lo, então eu vou postar um exemplo de código fácil aqui:

  1. Configurar uma função, nome de usuário e senha em tomcat-users.xml

  2. O seu web.xml deve conter algo como:

       <security-constraint>
         <web-resource-collection>
          <web-resource-name> 
            My Protected WebSite 
          </web-resource-name>
          <url-pattern> /* </url-pattern>
          <http-method> GET </http-method>
          <http-method> POST </http-method>
        </web-resource-collection>
        <auth-constraint>
        <!-- the same like in your tomcat-users.conf file -->
          <role-name> test </role-name>
        </auth-constraint>
      </security-constraint>
       <login-config>
        <auth-method> BASIC </auth-method>
        <realm-name>  Basic Authentication </realm-name>
      </login-config>
      <security-role>
        <description> Test role </description>
        <role-name> test </role-name>
      </security-role>
    
  3. Adicione isto a seu arquivo server.xml:

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

Para proteger o acesso ao seu webapp Tomcat, você pode implementar a sua restrição de segurança simples (por exemplo, em /var/lib/tomcat7/webapps/*/WEB-INF/web.xml) como abaixo (basta adicioná-lo 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 elemento auth-method, que especifica o método de autenticação que usamos, que é BASIC. O elemento security-constraint contém 3 elementos: web-resource-collection, auth-constraint, e user-data-constraint. O web-resource-collection especifica as partes do nosso aplicativo que exigem autenticação. O /* indica que toda a aplicação requer autenticação. Os especifica auth-restrição do papel que um usuário precisa ter para acessar os recursos protegidos. transporte de garantia da-restrição-os dados do usuário pode ser NONE, CONFIDENTIAL ou INTEGRAL. Nós configurá-lo para NONE, o que significa que redirecionar para SSL não é necessária quando você tenta bater o recurso protegido.

Também certifique-se que você tem linha:

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

dentro de sua conf/server.xml (seção Engine).

Se você não alterou quaisquer arquivos de configuração, por favor, examine o conf/tomcat-users.xml arquivo na sua instalação (locate tomcat-users.xml). Esse arquivo deve conter as credenciais para deixá-lo usar Tomcat webapp.

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

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

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

Leia mais:. Gestor App HOW-TO

Em seguida, reiniciar o Tomcat e quando acessar a sua webapp, deve pedir-lhe as credenciais certas.

Veja também:

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